admin 管理员组

文章数量: 887021


2024年1月9日发(作者:mid的函数怎么用)

sql having和group by的用法

Having子句主要是在使用Group by子句时使用,它是在SQL语句中用于检索统计信息时的限定条件。Having子句可以看做是对查询结果的再次筛选。

Group By子句可以把数据集合划分为几个小组,并对他们应用聚合函数,比如计算这几个小组的平均数和总数。

Having子句用于指定按照Group By子句中选定属性进行分组聚合后,需要满足何种条件才算有效结果,它是一种限定性的谓词,相当于Hbase中的Where子句。

换句话说,Group by子句经过分解后得到的数据是以列表的形式发出的,而Having子句对这些分组的数据进行进一步的筛选,最后得到符合要求的数据。

Having子句主要用在分组函数后面,如:sum,avg,max,min等,以及其他任何涉及分组的查询中,用来限制返回的结果或者控制输入结果。

Having子句一般格式为:

SELECT 列表列

FROM 表

GROUP BY 列表列

HAVING 条件

例如对员工表,可以按照工资求和,条件是工资总和大于3000,也可以按照部门求平均工资,条件是平均工资大于8000,代码如下:

SELECT SUM(salary)

FROM employee

GROUP BY id

HAVING SUM(salary) > 3000

除此之外,Having子句还经常和同时使用其他语句,比如Order By子句,在这种情况下,Having子句通常出现在Order By之前,以便对筛选出的结果进行排序。

Group By子句和Having子句结合使用是SQL语句中一种非常常见的组合,用以实现更多的功能。虽然两个子句有一定的联系,但是用法和目的也不完全相同,Group By子句是对查询结果进行分组,Having子句则是对分组后的结果进行条件判断筛选。

总而言之,Group by子句是用来对数据集进行分组,它只能对分组后的结果进行统计汇总,而Having子句是专门用来排除不符合条件的分组结果的,用来从大量的数据中去除不需要的数据,以得到满足条件的结果。


本文标签: 子句 结果 分组 进行