欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Sql中GroupBy、having分组查询介绍

程序员文章站 2022-03-09 22:30:09
group by:对select查询出来的数据集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。 我们需要注意的是:在使用group by的sql语句中...

group by:对select查询出来的数据集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。

我们需要注意的是:在使用group by的sql语句中,select中返回的字段,必须满足以下两个条件之一:

包含在group by语句的后面,作为分组的依据; 这些字段包含在聚合函数中。常见的聚会函数有:count,sum,max, avg等

select city, count(*)from user where age=22 group by city

如果你这样查询是错误的:select city,age, count(*)from user where age=2 group by city

提示错误:选择列表中的列 ‘user .age’ 无效,因为该列没有包含在聚合函数或 group by 子句中。

having:用于对where和group by查询出来的分组经行过滤,查处出满足条件的分组结果。所以having的使用需要注意以下几点:

having**只能用于group by** (分组统计语句中) where 是用于在初始表中筛选查询,having用于在where和group by 结果分组中查询 having 子句中的每一个元素也必须出现在select列表中 having语句可以使用聚合函数,而where不使用。

select city, count(*) from user where age=22 group by city having count(*)>4

如果你这样查询是错误的:select city, count(*) from user where age=22 group by city having age>4

提示错误:having 子句中的列 ‘user .age’ 无效,因为该列没有包含在聚合函数或 group by 子句中。