2012-05-30 35 views
1

我有问题GROUP BY声明。GROUP BY用'+'表示

我有一个表TEST: enter image description here

我想执行以下select语句:

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

下面是结果:

SUM(A) 
3 
1 
3 

它的工作原理,但我有不知道为什么。 a + b与GROUP BY声明有什么关系?

谢谢。

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

回答

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+BNULL是... 3
A的总和,其中A+B1是...... 1
A其中A+B5是总和...... 3


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

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

而与任何价值和空加为null可以使用COALESCE(a, 0) + COALESCE(b, 0)

1

规避这一点。

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)的添加列的临时表,然后在该列上执行该组。

+0

为什么不使用OP示例中的实际数据?具体来说,包括'NULL'值? – MatBailie

+0

@Dems Yeap。应该做到这一点。关于在团体里使用* + *的问题,我看了问题 –