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的学习的主要内容,如果未能解决你的问题,请参考以下文章