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

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

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

本题考察点包括两表纵向连接、分表排序,这道题最后的分表排序是参考其他答主完成的,但是感觉逻辑不是很准确,待解释完下列代码后po出疑问。
(select
    distinct exam_id tid,
    count(distinct uid) uv,
    count(uid) pv
  from
    exam_record
  group by
    tid)   //  ① 首先从作答记录表按试卷ID进行分组聚合查询
union  //  ③ 使用union进行两表连接,连接前需要保证各个字段名称相同
(select
    distinct question_id tid,
    count(distinct uid) uv,
    count(uid) pv
  from
    practice_record
  group by
    tid)  //  ② 其次采用类似的操作从练习表按题目ID进行分组聚合查询
order by
  left(tid, 1) desc,  //  按uv、pv降序排列
  uv desc,
  pv desc
一个问题:如果试卷ID与题目ID是交错的,那么使用left(tid, 1) desc的方式显然是行不通的,此时应如何达到现有的排序要求?


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务