sql having和group by的用法
Having子句主要是在使用Group by子句时使用,它是在SQL语句中用于检索统计信息时的限定条件。Having子句可以看做是对查询结果的再次筛选。
Group By子句可以把数据集合划分为几个小组,并对他们应用聚合函数,比如计算这几个小组的平均数和总数。
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子句是专门用来排除不符合条件的分组结果的,用来从大量的数据中去除不需要的数据,以得到满足条件的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论