知识

对查询结果进行分组计算

作用:可以控制计算的级别:对全表还是对一组。
目的:细化计算函数的作用对象。
分组语句的一般形式:
[GROUP BY ]
[HAVING ]
GROUP BY子句中的分组依据列必须是表中存在的列名,不能使用AS子句指派的结果集列的别名。
带有GROUP BY 子句的SELECT语句的查询列表中只能出现分组依据列或统计函数,因为分组后每个组只返回一行结果。

例34.统计每门课程的选课人数,列出课程号和人数。

SELECT 课程号, COUNT(课程号) AS 选课人数
FROM 成绩表
GROUP BY 课程号

该语句首先对查询结果按课程号的值分组,所有具有相同课程号值的元组归为一组,然后再对每一组使用COUNT函数进行计算,求得每组的学生人数。

例35.查询每名学生的选课门数和平均成绩。

SELECT 学号, 
COUNT(*) 选课门数,
AVG(成绩) 平均成绩
FROM 成绩表
GROUP BY 学号

题解

题目:现在运营想要对每个学校**不同性别的用户活跃情况发帖数量进**行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。

SELECT gender,university,COUNT(*)user_num,AVG(active_days_within_30)avg_active_days,
AVG(question_cnt)avg_quesition_cnt
FROM user_profile
GROUP BY gender,university

用户信息表:user_profile

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

发帖数量字段(question_cnt)

回答数量字段(answer_cnt)

你的查询返回结果需要对性别和学校分组,示例如下:

示例1