SQL:利用 having 实现分组过滤

SQL:利用 having 实现分组过滤


前言

很多朋友在进行数据库检索的时候,都会遇到需要进行分组过滤的情况

比如:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。

本文将对这个例题进行分析,主要介绍 having 函数的用法

例题链接:SQL19 分组过滤练习题


一、having简介

用法:当聚合函数结果作为筛选条件时,不能用where,而是用having语法,配合重命名进行使用

更多内容可以参考:GROUP BY和HAVING用法介绍
数据库查询语句 – HAVING的用法

二、用法分析

//数据库表结构
id	device_id	gender	age	university	gpa	active_days_within_30 question_cnt answer_cnt
1	2138	male	21	北京大学	3.4	7	2	12
2	3214	male   null 复旦大学 4.0	15	5	25
3	6543	female	20	北京大学	3.2	12	3	30
4	2315	female	23	浙江大学	3.6	5	1	2
5	5432	male	25	山东大学	3.8	20	15	70
6	2131	male	28	山东大学	3.3	15	7	13
7	4321	female	26	复旦大学	3.6	9	6	52
//搜索语句
select 
	university,
	avg(question_cnt) as avg_question_cnt,
	avg(answer_cnt) as avg_answer_cnt
from user_profile
group by university
having avg_question_cnt < 5 or avg_answer_cnt < 20

猜你喜欢

转载自blog.csdn.net/qq_46119575/article/details/129827540