题解 | #月均完成试卷数不小于3的用户爱作答的类别#
月均完成试卷数不小于3的用户爱作答的类别
https://www.nowcoder.com/practice/b1d13efcfa0c4ecea517afbdb9090845
select tag,count(tag) as tag_cnt from ( select tag from (select exam_id from ( select * from exam_record er where er.uid in ( # 查找月均完成试卷数不小于3的用户list select uid from ( select uid, round(count(date_format(submit_time, '%Y%m')) / count(distinct date_format(submit_time, "%Y%m")), 2) as complete_avg from exam_record group by uid having complete_avg >= 3 ) as over_three_1 ) ) as over_three_2 ) as eti left join examination_info ei on eti.exam_id = ei.exam_id ) as tct group by tag order by tag_cnt desc;
【知识点】子查询的别名问题、date_format函数、GROUP BY、HAVING
date_format(submit_time, '%Y%m')——后面的格式需要加引号,不然会报错
SELECT xxx FROM (子查询) AS [别名]——子查询得到的表要加别名,不然会报错
WHERE xxx IN (子查询)——这里的我没加,通过了
查了一下子查询的别名问题,这个例题正好把两种情况都涉及到了:
【参考链接】