SELECT b.exam_id exam_id, 
    COUNT(DISTINCT uid) uv, 
    ROUND(AVG(score), 1) avg_score
FROM exam_record c 
    JOIN user_info a USING(uid)
    JOIN examination_info b USING(exam_id)
WHERE level > 5 AND tag = 'SQL' AND LEFT(start_time,11) = LEFT(submit_time, 11)
	# DATE_FORMAT(release_time,'%Y%MYD')=DATE_FORMAT(submit_time,'%Y%MYD'))
GROUP BY(exam_id)
ORDER BY uv DESC, avg_score ASC

要找题目id,作答人数,平均分

首先观察表,发现三个表,由一个中间表c连接,所以先链接三个表,对应4,5,6行

然后看限制条件,等级为5、tag是SQL,当天 对应7行

再在选择部分使用聚合函数,因为题目id没有用聚合函数,所以需要在后面使用分组函数

最后再使用排序语句

踩的坑,没有理解好题意,是人数,我最开始理解成次数了,老是错误。

sql'还是偏重业务

同时判断是否当天也看到了一个很优雅的写法,我直接截断的字符串