qq_53135366
yzero~
2021-04-20 10:44
采纳率: 100%
浏览 56

sql语句求救!!!

最近在自学sql,今天看到了一道题,想了半天也没搞明白。 问题: 学生表(学号,姓名,班级,学院) 学习表(学号,课程号,成绩) 课程(课程号,课程名,学分) 问题是查询每个班中被班中同学选的最多的课程的课程名和学分。 求各位大佬指点!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • u011974797
    涛哥是个大帅比 2021-04-20 15:40
    已采纳
    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.班级号
    
    点赞 评论
  • infokool
    infokool 2021-04-20 11:55

    主要是针对学习表进行操作,统计学习表里面课程号最多的数据,获取课程号,然后关联课程表查询课程名称与学分。

    求取课程号最多的数据,可以通过group by(课程号)进行分组操作,使用count(课程号) 进行倒序排列,获取第一条记录(limit 1)就可以获取到对应的课程号了

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-04-20 14:54

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论
  • PHP_xiaozhang
    听雨落下的声音 2021-04-20 14:58

    SELECT a.课程号,count(*),b.课程名,b.学分 FROM 学习表 as a LEFT JOIN 课程表 AS b on a.课程号 = b.课程号 GROUP BY a.课程号 ORDER by count(*) desc LIMIT 1

    点赞 评论
  • zsah2011
    笔下天地宽 2021-04-20 16:17

    典型的横纵表转换呗,随便翻了篇博客,可以自己看  https://www.cnblogs.com/rodge-run/p/7159483.html

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-04-21 18:18

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 评论

相关推荐