mysql-面试50题-3

一、查询数据 

ymysql-面试50题-2-CSDN博客

二、问题

21.查询男生、女生人数

mysql> select ssex, count(*) from student
    -> group by ssex;

+------+----------+
| ssex | count(*) |
+------+----------+
| 女   |        8 |
| 男   |        4 |
+------+----------+
2 rows in set (0.02 sec)

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

mysql> select *
    -> from student
    -> where student.Sname like '%风%'
    -> ;

+------+--------+---------------------+------+
| SId  | Sname  | Sage                | Ssex |
+------+--------+---------------------+------+
| 03   | 孙风   | 1990-12-20 00:00:00 | 男   |
+------+--------+---------------------+------+
1 row in set (0.00 sec)

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

mysql> select sname, count(*) from student
    -> group by sname
    -> having count(*)>1;

+--------+----------+
| sname  | count(*) |
+--------+----------+
| 李四   |        2 |
+--------+----------+
1 row in set (0.00 sec)

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

mysql> select *
    -> from student
    -> where YEAR(student.Sage)=1990;

+------+--------+---------------------+------+
| SId  | Sname  | Sage                | Ssex |
+------+--------+---------------------+------+
| 01   | 赵雷   | 1990-01-01 00:00:00 | 男   |
| 02   | 钱电   | 1990-12-21 00:00:00 | 男   |
| 03   | 孙风   | 1990-12-20 00:00:00 | 男   |
| 04   | 李云   | 1990-12-06 00:00:00 | 男   |
+------+--------+---------------------+------+
4 rows in set (0.00 sec)

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

mysql> select sc.CId,avg(sc.score) from sc,course
    -> group by sc.cid
    -> order by avg(sc.score) desc,cid asc;

+------+---------------+
| CId  | avg(sc.score) |
+------+---------------+
| 02   |      72.66667 |
| 03   |      68.50000 |
| 01   |      64.50000 |
+------+---------------+
3 rows in set (0.00 sec)

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

mysql> select student.sid, AVG(sc.score) as aver from student, sc
    -> where student.sid = sc.sid
    -> group by sc.sid
    -> having aver > 85;

+------+----------+
| sid  | aver     |
+------+----------+
| 01   | 89.66667 |
| 07   | 93.50000 |
+------+----------+
2 rows in set (0.00 sec)

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

mysql> select student.sname, sc.score from student, sc, course
    -> where student.sid = sc.sid
    -> and course.cid = sc.cid
    -> and course.cname = "数学"
    -> and sc.score < 60;

+--------+-------+
| sname  | score |
+--------+-------+
| 李云   |  30.0 |
+--------+-------+
1 row in set (0.00 sec)

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

mysql> select student.sname, cid, score from student
    -> left join sc
    -> on student.sid = sc.sid;

+--------+------+-------+
| sname  | cid  | score |
+--------+------+-------+
| 赵雷   | 01   |  80.0 |
| 赵雷   | 02   |  90.0 |
| 赵雷   | 03   |  99.0 |
| 钱电   | 01   |  70.0 |
| 钱电   | 02   |  60.0 |
| 钱电   | 03   |  80.0 |
| 孙风   | 01   |  80.0 |
| 孙风   | 02   |  80.0 |
| 孙风   | 03   |  80.0 |
| 李云   | 01   |  50.0 |
| 李云   | 02   |  30.0 |
| 李云   | 03   |  20.0 |
| 周梅   | 01   |  76.0 |
| 周梅   | 02   |  87.0 |
| 吴兰   | 01   |  31.0 |
| 吴兰   | 03   |  34.0 |
| 郑竹   | 02   |  89.0 |
| 郑竹   | 03   |  98.0 |
| 张三   | NULL |  NULL |
| 李四   | NULL |  NULL |
| 李四   | NULL |  NULL |
| 赵六   | NULL |  NULL |
| 孙七   | NULL |  NULL |
+--------+------+-------+
23 rows in set (0.00 sec)

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

mysql> select student.sname, course.cname,sc.score from student,course,sc
    -> where sc.score>70
    -> and student.sid = sc.sid
    -> and sc.cid = course.cid;

+--------+--------+-------+
| sname  | cname  | score |
+--------+--------+-------+
| 赵雷   | 语文   |  80.0 |
| 赵雷   | 数学   |  90.0 |
| 赵雷   | 英语   |  99.0 |
| 钱电   | 英语   |  80.0 |
| 孙风   | 语文   |  80.0 |
| 孙风   | 数学   |  80.0 |
| 孙风   | 英语   |  80.0 |
| 周梅   | 语文   |  76.0 |
| 周梅   | 数学   |  87.0 |
| 郑竹   | 数学   |  89.0 |
| 郑竹   | 英语   |  98.0 |
+--------+--------+-------+
11 rows in set (0.00 sec)

30.查询不及格的课程

mysql> select DISTINCT sc.CId
    -> from sc
    -> where sc.score <60;

+------+
| CId  |
+------+
| 01   |
| 02   |
| 03   |
+------+
3 rows in set (0.00 sec)

你可能感兴趣的:(面试,职场和发展)