Sql中GroupBy、having分组查询介绍

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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐