在 MySQL 中,我们可以使用单个 SELECT 使用 COUNT 和 SUM 值来计算另一个输出列中的值吗?
In MySQL, can we use the COUNT and SUM value to calculate a value in another output column using a single SELECT?
假设我们有类似的东西:
SELECT COUNT(IF(Column1 = 1, NULL, 1)) AS "A", SUM(Column2) AS "B" FROM MyDatabase;
在同一个查询中,我们可以添加一个列,例如 A * B,总共只有一个 SELECT 吗?
您需要重复表达式,或者将其转换为子查询并在外部查询中进行计算。你的表达没有那么复杂(并且可以简化,如下所示),所以我会选择第一个选项:
SELECT
SUM(Column1 = 1) a,
SUM(Column2) b,
SUM(Column1 = 1) * SUM(Column2) c
FROM MyDatabase;
假设column1
只取0/1的值,你可以这样做:
sum(column1 * column2)
如果可以取其他值,则:
sum( (column1 = 1) * column2 )
这两个都使用 MySQL 扩展,布尔值作为数字处理,“1”表示真,“0”表示假。
假设我们有类似的东西:
SELECT COUNT(IF(Column1 = 1, NULL, 1)) AS "A", SUM(Column2) AS "B" FROM MyDatabase;
在同一个查询中,我们可以添加一个列,例如 A * B,总共只有一个 SELECT 吗?
您需要重复表达式,或者将其转换为子查询并在外部查询中进行计算。你的表达没有那么复杂(并且可以简化,如下所示),所以我会选择第一个选项:
SELECT
SUM(Column1 = 1) a,
SUM(Column2) b,
SUM(Column1 = 1) * SUM(Column2) c
FROM MyDatabase;
假设column1
只取0/1的值,你可以这样做:
sum(column1 * column2)
如果可以取其他值,则:
sum( (column1 = 1) * column2 )
这两个都使用 MySQL 扩展,布尔值作为数字处理,“1”表示真,“0”表示假。