• MySQL嵌套,别名,分组查询


    有以下三张表:分别是课程表c,有课程号cno,课程名cname,课程类别cpro等

    学生信息表s,学号sno,姓名sname,性别ssex,年龄sage,班级sclass,籍贯jg

    成绩表sc,学号sno,课程号cno,成绩score。

    1.查询同时选修了c04和c05的同学的学号。

    我们在成绩表sc中可以发现,选修了c04课程的有060101,060102,070103,070301四人,选修了c05课程的有060101一人。所以同时选修了c04和c05课程的人只有060101

    通过sql语句查询,

    (1).嵌套查询,先查出选修了c05课程的人,再在选修了c05课程的人中查询选修c04的人:select sno from sc where cno='c04' and sno in(select sno from sc where cno='c05');

    只需要映射学号一列,select sno。来自表sc,form sc。 查询课程号为c04,并且学号为来自选修了c05的学号。sno in(查出的结果是选修了c05课程的学号)。选中,右击运行已选择的

    (2).临时修改表名查询,sc分别临时修改为两张表a和b,连接查询,join on。

    from sc a join sc b分别修改成两个命令a,b连接两个表的学号a.sno=b.sno。来自每张表的cno=c04和cno=c05,映射出a的学号a.sno
    select a.sno from sc a join sc b on a.sno=b.sno where a.cno='c04' and b.cno='c05';  如图

    2.统计选课人数超过3人的课程的课程号(cno)和选课人数(sno),分组(group by),统计学号大于3个人的

    分析:选课人数超过3人,有c01课程和c04课程都超过了3人,要映射出他们的课程号和人数

    语句:select cno 课程号,count(sno) 选课人数 from sc group by cno having count(sno)>3;

    要查出课程号和课程人数,即cno,sno,改个名字cno 课程号sno 选课人数

    在成绩表中,对课程分组,统计出分组后的学号个数大于3人的,如c01为1组,在c01中有060101,060102,070101,070301,统计学号的个数发现是4,满足赛选。反例:在c02课程组中,只有070101,080101两人,不满足count(sno)>3。如图:

    ----------end--------------

  • 相关阅读:
    【图像融合】基于matlab增强随机游走算法多焦点图像融合【含Matlab源码 1975期】
    JVM基础03_运行时数据区
    GitHub 2023报告-开源和AI的现状
    Linux ARMv8 异常向量表
    【NLP】第9章 匹配分词器和数据集
    优维全新力作:统一采控平台
    Electron 打包exe方法
    六大赛题,108万丰厚奖池!2023长三角(芜湖)人工智能视觉算法大赛等你来战!
    通信算法之七十七:无人机设备上的通信系统
    Grafana Panel组件跳转、交互实现
  • 原文地址:https://blog.csdn.net/2301_78327423/article/details/139392651