GROUP BY带有'+'表达式

时间:2012-05-30 08:02:06

标签: sql oracle

我对GROUP BY声明有疑问。

我有一张桌子测试: enter image description here

我想执行以下select语句:

select sum(a)
from TEST
group by a+b

结果如下:

SUM(A)
3
1
3

它有效,但我不知道为什么。 a + b对GROUP BY语句的表达式是什么?

感谢。

//编辑,抱歉这个巨大的图像。我会改变它

3 个答案:

答案 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 NULL3的总和为A A+B 1 1 A的总和为A+B5 3 COALESCE(a, 0) + COALESCE(b, 0) {{1}}为{{1}}的总和为{{1}}


您可以使用{{1}}

来规避这一点

答案 1 :(得分:1)

如果你想知道什么是你可以给它选择表达式

select  a+b,sum(a) from TEST group by a+b

添加任何值并为null时为null。

答案 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。