1

GROUP BY我的陈述有问题。

我有一张桌子测试: 在此处输入图像描述

我想执行以下选择语句:

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

结果如下:

SUM(A)
3
1
3

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

谢谢。

//编辑,对不起那个巨大的图像。我会改变它

4

3 回答 3

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

Awhere A+Bis 的总和是NULL…… where is的总和是…… where is 的总和是……3
AA+B11
AA+B53


您可以使用COALESCE(a, 0) + COALESCE(b, 0)

于 2012-05-30T08:07:44.033 回答
1

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

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

与任何值和 null 相加时为 null。

于 2012-05-30T08:08:46.017 回答
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。

于 2012-05-30T08:18:45.340 回答