为什么我用Sum()和GroupBy获得多行

时间:2019-07-20 01:09:03

标签: sql sum

当我对一列求和时,我得到所有行汇总的结果。当我在此汇总列上分组时,我将返回多行。 有人可以解释发生了什么吗?是否会秘密地将所有行与相同的数据分组,然后将所有这些行首先汇总为单独的行?

表列数据为

9.75
2.25
8.25
8.25
7
8
5
10.5
5
10.5
10.5
10.25
10.5
10.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
1.5
5
1.75
0.5
5
5
0.5
1.5
5
1.75
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
5
5
0.5
1.75
5
5
0.5
5
10
10
10
10
5
0.5
5
5
0.5
1.75
5
1.5
0.5
5
5
0.5
5
5
0.5
NULL

我从“分组依据”列中获得的结果

Select Sum(column) as [column]
From Table
Group By column  

(Result)
NULL
13.5
4.5
7
2.25
265
7
8
16.5
9.75
40
10.25
52.5

仅是总和的结果

Select Sum(column) as [column]
From Table

(result)
436.25

1 个答案:

答案 0 :(得分:1)

count, avg, and sum都是aggregate functions。它们采用一组行并将它们汇总在一起成为一个值。 count给出行数,avg给出它们的平均值,sum总结它们。

默认情况下,所有行都聚合在一起。 group by允许您将事物分成更多的组。 group by column时,您说要将column的所有具有相同值的行聚合在一起。因此,您将获得column具有相同值的所有行的总和。

您还可以通过选择列和计数来查看。

select column, count(column), sum(column)
from table
group by column

您会发现sum(column)column的{​​{1}}倍。例如。

count(column)