SQL语句中的Group by的学习

Posted pubff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句中的Group by的学习相关的知识,希望对你有一定的参考价值。

背景:学习clickhouse的时候遇到了group by语句,官方文档看了半天没看懂,查了其他资料大致明白了语句的作用

概述:一张表 infos 有id、name、age三个字段,我想将名字重复的人算作一个人然后计算他们总共的年龄怎么办?(场景很脑瘫,做个说明罢了)

id name age
1 张三 12
2 pbuff 20
3 pbuff 11

 

解决方案:可以这样

select name,sum(age) from infos group by name

原理解释:

首先select语句将三个字段都选择出来了,然后group by name将name相同的内容字段内容合并成一个,同时对应的id和age也要合并在一起,但是呢?一个位置不可能对应对个值,所以除了name字段其他字段都是多个值,这样SQL会报错,这时候为了将多个值进行处理我们需要用到一些聚合函数,例如:

sum()            用于计算多个值得总和
count()          用于计算出现的次数
grouparray()     用于将多个字段聚合成数组
.......

 select语句执行的时候:

id name age
1 张三 12
2 pbuff 20
3 pbuff 11

group by name之后:

id name age
1 张三  12

2

3

pbuff

20

11

然后对于age字段使用了sum()聚合函数之后:

id name age
1 张三 12

2

pbuff

31

以上是关于SQL语句中的Group by的学习的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中的group by啥意思

sql语句中的group by要怎么用!!

sql语句中的group by要怎么用!!

SQL中的group by语句和order by语句怎么用?最好能有个例子

sql查询中如何用group by查询出完整的一行记录?

SQL中GROUP BY语句与HAVING语句的使用