题目分析

我们需要从 user_profile 表中提取以下信息:

  • 每个学校的平均发帖数。
  • 每个学校的平均回帖数。
  • 筛选出平均发帖数低于5或平均回帖数小于20的学校。

解题思路

  1. 分组统计:根据 university 进行分组。
  2. 计算平均值:使用 AVG() 函数计算每个学校的平均发帖数和平均回帖数。
  3. 筛选条件:使用 HAVING 子句筛选出平均发帖数低于5或平均回帖数小于20的学校。
  4. 格式化结果:使用 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;