我对GROUP BY
声明有疑问。
我有一张桌子测试:
我想执行以下select语句:
select sum(a)
from TEST
group by a+b
结果如下:
SUM(A)
3
1
3
它有效,但我不知道为什么。 a + b对GROUP BY
语句的表达式是什么?
感谢。
//编辑,抱歉这个巨大的图像。我会改变它
答案 0 :(得分:4)
试试这个...... SELECT 2 + NULL
然后看看你得到了什么。
答案不是2
,而是NULL
。
所以,使用你的示例数据......
A | B | A+B
-----+-----+-----
1 | 0 | 1
2 | NULL| NULL
3 | 2 | 5
1 | NULL| NULL
NULL| 2 | NULL
A
A+B
NULL
为3
的总和为A
A+B
1
1
A
的总和为A+B
。5
3
COALESCE(a, 0) + COALESCE(b, 0)
{{1}}为{{1}}的总和为{{1}}
您可以使用{{1}}
来规避这一点答案 1 :(得分:1)
如果你想知道什么是你可以给它选择表达式 添加任何值并为null时为null。select a+b,sum(a) from TEST group by a+b
答案 2 :(得分:0)
这可以帮助你理解。
select a,a+b from test11;
+------+------+------+
| a | b | a+b |
+------+------+------+
| 1 | 2 | 3 |
| 2 | 2 | 4 |
| 2 | 3 | 5 |
| 4 | 3 | 7 |
| 3 | 4 | 7 |
| 0 | 7 | 7 |
+------+------+------+
DB将创建临时表,其中添加了包含(a + b)的col,然后在该col上执行group by。