zoukankan      html  css  js  c++  java
  • MySQL经典45题(二)

    21. 查询男生、女生人数

    SELECT ssex,count(1) as 人数
    from Student
    GROUP BY ssex

     22. 查询名字中含有「风」字的学生信息

    SELECT *
    FROM Student
    WHERE sname like '%风%'

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

    解题思路:按照姓名分组,姓名形同的情况下按照性别分组统计人数,如果统计人数大于等于1,那说明这个人就是同名同性的

    SELECT sname,ssex,count(sname)
    FROM Student
    GROUP BY sname,ssex
    HAVING count(sname)>1

    24. 查询 1990 年出生的学生名单

    SELECT * 
    FROM Student
    WHERE year(sage)='1990'

    25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

    SELECT cid,avg(score) as avg_score
    FROM SC
    GROUP BY cid
    ORDER BY avg_score DESC,cid ASC

    26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩

    SELECT 
    a.sid,
    b.sname,
    a.avg_score
    FROM
    (SELECT sid,avg(score) as avg_score
    FROM SC
    GROUP BY sid
    HAVING avg(score)>=85 ) a left join Student b
    on a.sid=b.sid 

     27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

    SELECT b.sname, a.score 
    FROM SC a
    left join Student b on a.sid=b.sid
    WHERE a.cid IN
    (SELECT cid FROM Course WHERE cname='数学') and a.score<60

     28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

    SELECT a.*,b.*
    FROM Student a
    left join SC b
    on a.sid=b.sid

     29. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

    SELECT b.sname,c.cname,a.score
    FROM SC a LEFT JOIN Student b 
    on a.sid=b.sid LEFT JOIN Course c on a.cid=c.cid
    WHERE a.score>70

     30. 查询不及格的课程

    SELECT distinct cid 
    FROM SC
    WHERE score<60

     31. 查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名

    SELECT a.sid,b.sname
    FROM
    (SELECT sid
    from SC
    where cid='01' and score>=80) a left JOIN Student b on a.sid=b.sid

     32. 求每门课程的学生人数

    select cid,
    count(1) as con
    from SC
    group by cid

     33. 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

    解题思路:4张表连接起来,按成绩排序降序,取第一条记录,就是成绩最高的

    SELECT a.*,b.score
    FROM Student a  INNER JOIN SC  b on a.sid=b.sid
    INNER JOIN Course c on b.cid=c.cid 
    INNER JOIN Teacher d on c.tid=d.tid
    WHERE d.Tname='张三'
    ORDER BY b.score desc 
    LIMIT 1

    34. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩(Mysql版本太低,无法使用窗口函数,略)

    35. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩(Mysql版本太低,无法使用窗口函数,略)

    36. 查询每门功成绩最好的前两名(Mysql版本太低,无法使用窗口函数,略)

    37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。

    SELECT cid,count(1) as cons 
    FROM SC
    GROUP BY cid
    HAVING count(1)>5

    38. 检索至少选修两门课程的学生学号

    SELECT sid,count(1) as cons 
    FROM SC
    GROUP BY sid
    HAVING count(1)>=2

     39. 查询选修了全部课程的学生信息

    SELECT * from Student where sid IN
    (select sid from  SC  GROUP BY sid HAVING COUNT(*)=
    (SELECT count(cid) FROM Course) )

     40. 查询各学生的年龄,只按年份来算

    select *, year(NOW())-year(sage) as 年龄
    from Student

      41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

    select *, TIMESTAMPDIFF(YEAR,sage,NOW()) as 年龄
    from Student

     42. 查询本周过生日的学生

    select *,week(Sage),week(now()) 
    from Student 
    where week(Sage)=week(now());

     43. 查询下周过生日的学生

    select *,week(Sage),week(now()) 
    from Student 
    where week(Sage)=week(now())+1;

     44. 查询本月过生日的学生

    select *,month(Sage),month(now()) 
    from Student 
    where month(Sage)=month(now());

     45. 查询下月过生日的学生

    select *,month(Sage),month(now()) 
    from Student 
    where month(Sage)=month(now())+1;

  • 相关阅读:
    Chrome Native Messaging 与本地程序之间的通信
    由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
    linux
    maven POM.xml 标签详解 转
    java-线程观察整个生命周期
    java-Web项目开发中Spring整合Junit单元测试
    java-Map集合的四种遍历方式
    Java-8内置的核心函数式接口接口
    正则表达式
    Java-Atomic系列12大类实例讲解和原理分解
  • 原文地址:https://www.cnblogs.com/lxhui/p/14009908.html
Copyright © 2011-2022 走看看