题解 | #每个题目和每份试卷被作答的人数和次数#

每个题目和每份试卷被作答的人数和次数

https://www.nowcoder.com/practice/203d0aed8928429a8978185d9a03babc

#表明union相当于复制黏贴 顺序都是和原来的一样的 但是一旦重p排会打乱原有的顺序
#因此需要在union之前拍好顺序,可以通过每个子表多套一层select的方法避免整个表重排
#和解决在语句中间无法使用order by的问题
SELECT * FROM
(SELECT exam_id AS tid, COUNT(DISTINCT exam_record.uid) uv,COUNT(*) pv
FROM exam_record
GROUP BY exam_id
ORDER BY uv DESC, pv DESC) T1
UNION
SELECT * FROM
(SELECT question_id tid, COUNT(DISTINCT practice_record.uid) uv,COUNT(*) pv
FROM practice_record
GROUP BY question_id
ORDER BY uv DESC, pv DESC)T2

#.这个是通过标记重排分类试卷类型
select exam_id,uv,pv
from
(
select exam_id, count(distinct uid)as uv,count(*)as pv,'2' as test
from exam_record
group by exam_id
union
(
select question_id,count(distinct uid)as uv,count(*)as pv,'1' as test
from practice_record
group by question_id
)
) s
order by test desc,uv desc,pv desc

全部评论

相关推荐

点赞 评论 收藏
分享
头像
昨天 21:15
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务