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 子句中。