聚合函数数据分组
Posted love-jelly-pig
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚合函数数据分组相关的知识,希望对你有一定的参考价值。
1.AVG函数:求平均值。
需要注意的是:每个字段都必须使用一个AVG函数:
select avg(id) as id_avg,avg(price) as price_avg from tb2;
如上,这样才能分别求出id和price的平均值。
AVG函数忽略NULL。
2.COUNT函数:统计数量。
- 使用 COUNT(*) 对表中行的数目进行计数,不管表列中包含的是空值( NULL )还是非空值。
使用 COUNT(column) 对特定列中具有值的行进行计数,忽略NULL值。
select count(*) from tb2;
select count(column_name) from tb2;
第一条语句会计算包含空值的记录,第二条语句则不会。
3. MAX和MIN函数:计算最大值和最小值。
MAX(),MIN()都必须指定列名。分别找出这一列最大值和最小值。
4. SUM函数:统计合计计算值。
select sum(id) as id_sum,sum(price) as price_sum from tb2;
此语句分别检索出id和price的和。
5. Group by子句:分组。
例如:
select id,count(*) as id_count from tb2 group by id;
此语句按id分组来检索出id和id数量。结果为:
tips:如果出现聚合函数,则只能使用group by而不可以使用order by.
6. having子句:过滤分组。
- WHERE 过滤指定的是行而不是分组。 事实上, WHERE 没有分组的概念。
- 目前为止所学过的所有类型的 WHERE 子句都可以用 HAVING 来替代。唯一的差别是WHERE 过滤行,而 HAVING 过滤分组。
可以理解成,having可以替代where,但是where不能替代having。因为having还可以过滤分组。
select id, count(*) from tb2 group by id having count(*)>=2;
此语句按id为分组,并检索出id数量不小于2的id和对应的数量。
HAVING 和 WHERE 的差别这里有另一种理解方法:
- WHERE 在数据分组前进行过滤,HAVING在数据分组后进行过滤。
- WHERE排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。
where和having连用:
select id,price,count(*) from tb2 where price > 555 group by id having count(*)>=1;
以id为分组,检索price大于555并且数量不少于1的id,price,以及数量。
7.总结
以上是关于聚合函数数据分组的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用groupby函数agg函数获取每个分组聚合对应的标准差(std)实战:计算分组聚合单数据列的标准差(std)计算分组聚合多数据列的标准差(std)
如何在 pyspark 中对需要在聚合中聚合的分组数据应用窗口函数?
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式