最近在自学sql,今天看到了一道题,想了半天也没搞明白。 问题: 学生表(学号,姓名,班级,学院) 学习表(学号,课程号,成绩) 课程(课程号,课程名,学分) 问题是查询每个班中被班中同学选的最多的课程的课程名和学分。 求各位大佬指点!!!
select max(数量),t.课程号,t.班级号,k.课程名,k.学分 from (
select count(1) as 数量,x.课程号,s.班级号 from 学习表 x
left join 学生表 s on s.学号 = x.学号
group by x.课程号,s.班级号
order by s.班级号,数量 desc
) t
inner join 课程表 k on t.课程号 = k.课程号
group by t.班级号
主要是针对学习表进行操作,统计学习表里面课程号最多的数据,获取课程号,然后关联课程表查询课程名称与学分。
求取课程号最多的数据,可以通过group by(课程号)进行分组操作,使用count(课程号) 进行倒序排列,获取第一条记录(limit 1)就可以获取到对应的课程号了
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
SELECT a.课程号,count(*),b.课程名,b.学分 FROM 学习表 as a LEFT JOIN 课程表 AS b on a.课程号 = b.课程号 GROUP BY a.课程号 ORDER by count(*) desc LIMIT 1
典型的横纵表转换呗,随便翻了篇博客,可以自己看 https://www.cnblogs.com/rodge-run/p/7159483.html
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y