SQL|查询基础

分组查询

基础分组计算

查询出 每个学校 每种性别的 用户数、30天内平均活跃天数和平均发帖数量。

用户信息表:user_profile

30天内活跃天数字段(active_days_within_30)

发帖数量字段(question_cnt)

回答数量字段(answer_cnt)

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 复旦大学 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 male 26 复旦大学 3.6 9 6 52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select
gender,
university,
COUNT(*) as user_num,
AVG(active_days_within_30) AS avg_active_day,
AVG(question_cnt) AS avg_question_cnt
from
user_profile
group by
gender,
university
ORDER by
gender ASC,
university ASC;

注意

分组查询使用 GROUP BY 关键字,在 select 中大部分时候都需要使用到分组函数(常见的有 count, avg 等),分组查询 select 后直接查询列的唯一场景就是这个列是被分组的列,不然会语法报错

分组过滤

查询出平均发贴数低于5的学校或平均回帖数小于20的学校,和他们对应的平均发帖数,平均回帖数

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 复旦大学 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

SQL|查询基础
http://example.com/2024/11/15/SQL-查询基础/
作者
Noctis64
发布于
2024年11月15日
许可协议