题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。
用户信息表:user_profile
30天内活跃天数字段(active_days_within_30)
发帖数量字段(question_cnt)
回答数量字段(answer_cnt)
入门刷题 - 图1
你的查询返回结果需要对性别和学校分组,示例如下:
入门刷题 - 图2

  1. SELECT gender,university,COUNT(device_id) as user_num ,avg(active_days_within_30),avg(question_cnt)AS avg_question_cnt
  2. FROM user_profile
  3. GROUP BY gender,university

题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。
示例:user_profile
入门刷题 - 图3

根据示例,你的查询应返回以下结果:
29640EEECFF74AD79B98EABDB92133B3.png

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
  • 限定条件:平均发贴数低于5或平均回帖数小于20的学校,avg(question_cnt)<5 or avg(answer_cnt)<20,聚合函数结果作为筛选条件时,不能用where,而是用having语法,配合重命名即可;
  • 按学校输出:需要对每个学校统计其平均发贴数和平均回帖数,因此group by university
  • 表头重命名:as用having不用where

<br />

描述

题目:现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。

示例:user_profile
入门刷题 - 图5

根据示例,你的查询应返回以下结果:
14946A75606D8D32F59988A1074161B5.png

需要搞清楚GROUP BY 和 ORDER BY 的先后顺序

SELECT university,AVG(question_cnt) AS avg_question_cnt
FROM user_profile
GROUP BY university 
ORDER BY avg_question_cnt

描述

SQL21 浙江大学用户题目回答情况
题目:现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据
https://www.nowcoder.com/practice/55f3d94c3f4d47b69833b335867c06c1?tpId=199&tqId=1975673&ru=/ta/sql-quick-study&qru=/ta/sql-quick-study/question-ranking

select qpd.device_id,qpd.question_id,qpd.result
FROM question_practice_detail AS qpd
INNER JOIN user_profile AS up
ON up.device_id = qpd.device_id and up.university="浙江大学"