美文网首页转载部分
MySQL经典50题-第26到30题

MySQL经典50题-第26到30题

作者: 皮皮大 | 来源:发表于2021-03-28 11:08 被阅读0次

    本文中介绍的是第26-30题目,主要涉及的知识点是:

    • 分组之后count统计人数

    • 模糊匹配

    • 同一个表的自连接

    • having的使用

    5个题目是:

    • 查询每门课被选修的学生数

    • 查询出只有两门课程的全部学生的学号和姓名

    • 查询男女生人数

    • 查询名字中含有字的学生信息

    • 查询同名同性的学生名单,并统计同名人数

    image

    题目26

    题目需求

    查询每门课被选修的学生数

    分析过程

    题目想求解的是每门课有多少人选修,挺简单的

    SQL实现

    select 
      c.c_id
      ,c.c_name
      ,count(s.s_id)
     from Course c
     join Score s
     on c.c_id = s.c_id
     group by c.c_id;
    
    image

    题目27

    题目需求

    查询出只有两门课程的全部学生的学号和姓名

    分析过程

    image

    课程:Score,通过c_id来决定课程数

    学生:Student

    SQL实现

    having条件是分组之后在执行的,where语句是分组前先执行的

    select 
        s.s_id
        ,s.s_name
    from Student s
    join Score sc
    on s.s_id = sc.s_id
    group by 1,2
    having count(sc.c_id) = 2;
    
    image

    题目28

    题目需求

    查询男女生人数

    分析过程

    直接统计Student表中的性别s_sex人数

    SQL实现

    先看看数据:男女人数都是4

    image
    --  自己的方法
    select 
        count(case when s_sex='男' then 1 end) as '男'
        ,count(case when s_sex='女' then 1 end) as '女'
    from Student;
    
    -- 参考方法
    select 
        s_sex
        ,count(s_sex) as `人数`
    from Student
    group by s_sex;
    
    image image

    题目29

    题目需求

    查询名字中含有字的学生信息

    分析过程

    名字中带有风,我们使用模糊匹配%;使用的表是Student

    SQL实现

    先看看哪些同学的名字中有风

    image
    -- 模糊匹配:我们在两边都加上了%,考虑的是姓或者名字含有风,虽然风姓很少见
     select * from Student where s_name like "%风%";
    
    image

    题目30

    题目需求

    查询同名同性的学生名单,并统计同名人数

    分析过程

    从Student表中找出同名且同性的学生人数

    SQL实现

    1、先看看班级的学生信息

    image

    现有的数据中没有同名的学生,但是当班级人数增多的时候很有可能在班级上出现同名的学生

    2、假设有同名同性的学生

     select 
      a.s_name
      ,a.s_sex
      ,count(*)
     from Student a  -- 同一个表的自连接
     join Student b
     on a.s_id != b.s_id   -- 连接的时候不能是同一个人:学号保证,每个人的学号是唯一的,其他字段都可能重复
     and a.s_sex = b.s_sex  -- 性别相同
     and a.s_name = b.s_name -- 名字相同
     group by 1,2;
    
    image

    相关文章

      网友评论

        本文标题:MySQL经典50题-第26到30题

        本文链接:https://www.haomeiwen.com/subject/pjlphltx.html