题目分析
我们需要从 user_profile
表中提取以下信息:
- 每个学校的平均发帖数。
- 每个学校的平均回帖数。
- 筛选出平均发帖数低于5或平均回帖数小于20的学校。
解题思路
- 分组统计:根据
university
进行分组。 - 计算平均值:使用
AVG()
函数计算每个学校的平均发帖数和平均回帖数。 - 筛选条件:使用
HAVING
子句筛选出平均发帖数低于5或平均回帖数小于20的学校。 - 格式化结果:使用
ROUND()
函数将结果保留到小数点后3位。
SQL 查询
以下是实现上述思路的 SQL 查询:
SELECT
university,
ROUND(AVG(question_cnt), 3) AS avg_question_cnt,
ROUND(AVG(answer_cnt), 3) AS avg_answer_cnt
FROM
user_profile
GROUP BY
university
HAVING
AVG(question_cnt) < 5 OR AVG(answer_cnt) < 20;