现在的位置: 首页 > 综合 > 正文

SQL面试题 三(单表、多表查询)

2013年08月16日 ⁄ 综合 ⁄ 共 3039字 ⁄ 字号 评论关闭

一、给定一张学生成绩表tb_grade:学号,姓名,科目号,科目名,分数。(如下表

(select * from tb_grade order by Sno,Cno;)
+------+-------+-----+-------+-------+
| Sno  | Sname | Cno | Cname | score |
+------+-------+-----+-------+-------+
| 1001 | 李菲  |   1 | 语文  |    86 |
| 1001 | 李菲  |   2 | 数学  |    56 |
| 1001 | 李菲  |   3 | 物理  |    48 |
| 1001 | 李菲  |   4 | 化学  |    90 |
| 1001 | 李菲  |   5 | 英语  |    57 |
| 1002 | 王琪  |   1 | 语文  |    90 |
| 1002 | 王琪  |   2 | 数学  |    68 |
| 1002 | 王琪  |   3 | 物理  |    87 |
| 1002 | 王琪  |   4 | 化学  |    68 |
| 1002 | 王琪  |   5 | 英语  |    45 |
| 1003 | 杨阳  |   1 | 语文  |    86 |
| 1003 | 杨阳  |   2 | 数学  |    56 |
| 1003 | 杨阳  |   3 | 物理  |    48 |
| 1003 | 杨阳  |   4 | 化学  |    90 |
| 1003 | 杨阳  |   5 | 英语  |    52 |
| 1004 | 和树  |   1 | 语文  |    82 |
| 1004 | 和树  |   2 | 数学  |    56 |
| 1004 | 和树  |   3 | 物理  |    67 |
| 1004 | 和树  |   4 | 化学  |    30 |
| 1004 | 和树  |   5 | 英语  |    68 |
+------+-------+-----+-------+-------+

 1、查询不及格科目数大于等于2的学生学号和不及格科目数量:

MySQL> select Sno,count(score) as '不及格科目数' from tb_grade where score<60 group by Sno having count(score)>=2;

+------+--------------+
| Sno  | 不及格科目数 |
+------+--------------+
| 1001 |            3 |
| 1003 |            3 |
| 1004 |            2 |
+------+--------------+

2、查询不及格科目数大于等于2的学生学号和学生姓名:

MySQL> select Sno,Sname from tb_grade where score<60 group by Sno having count(score)>=2;

+------+-------+

| Sno  | Sname |
+------+-------+
| 1001 | 李菲  |
| 1003 | 杨阳  |
| 1004 | 和树  |
+------+-------+

3、查询不及格科目数大于等于2的学生学号、学生姓名、科目号、科目名称和分数,并按学号降序、科目号升序排序:

MySQL>  select * from tb_grade where score<60 and Sno inselect  Sno  from
tb_grade where score<60  group by  Sno having count(score)>=2 
order by Sno desc,Cno asc;

+------+-------+-----+-------+-------+
| Sno  | Sname | Cno | Cname | score |
+------+-------+-----+-------+-------+
| 1004 | 和树  |   2 | 数学  |    56 |
| 1004 | 和树  |   4 | 化学  |    30 |
| 1003 | 杨阳  |   2 | 数学  |    56 |
| 1003 | 杨阳  |   3 | 物理  |    48 |
| 1003 | 杨阳  |   5 | 英语  |    52 |
| 1001 | 李菲  |   2 | 数学  |    56 |
| 1001 | 李菲  |   3 | 物理  |    48 |
| 1001 | 李菲  |   5 | 英语  |    57 |
+------+-------+-----+-------+-------+

 

二、有三张表:class、student、score

班级表 class:                                                           

+-------+---------+---------+
| classID | className |
+---------+-----------+
|       1 | 一班      |
|       2 | 二班      |
|       3 | 三班      |
+---------+-----------+

学生表 student:

+-------+---------+---------+
| stuID | classID | stuName |
+-------+---------+---------+
|  1001 |       1 | 张三    |
|  1002 |       1 | 李丽    |
|  1003 |       1 | 钱封    |
|  1004 |       2 | 杨国    |
|  1005 |       2 | 小样    |
|  1006 |       2 | 区天    |
|  1007 |       3 | 李三宅  |
|  1008 |       3 | 黄武    |
|  1009 |       3 | 赵六    |
+-------+---------+---------+

分数表 score:

+----------+-------+--------+-------+
| courseID | stuID | course | score |
+----------+-------+--------+-------+
|        2 |  1001 | 数学   |    73 |
|        3 |  1001 | 英语   |    79 |
|        1 |  1001 | 语文   |    81 |
|        3 |  1002 | 英语   |    87 |
|        2 |  1002 | 数学   |    83 |
|        1 |  1002 | 语文   |    79 |
|        1 |  1003 | 语文   |    65 |
|        3 |  1003 | 英语   |    65 |
|        2 |  1003 | 数学   |    97 |
|        1 |  1004 | 语文   |    78 |
|        3 |  1004 | 英语   |    78 |
|        2 |  1004 | 数学   |    86 |
|        1 |  1005 | 语文   |    67 |
|        3 |  1005 | 英语   |    88 |
|        2 |  1005 | 数学   |    89 |
|        2 |  1006 | 数学   |    90 |
|        3 |  1006 | 英语   |    92 |
|        1 |  1006 | 语文   |    98 |
|        1 |  1007 | 语文   |    85 |
|        2 |  1007 | 数学   |    78 |
|        3 |  1007 | 英语   |    72 |
|        1 |  1008 | 语文   |    78 |
|        3 |  1008 | 英语   |    77 |
|        2 |  1008 | 数学   |    85 |
|        3 |  1009 | 英语   |    94 |
|        2 |  1009 | 数学   |    91 |
|        1 |  1009 | 语文   |    68 |
+----------+-------+--------+-------+

1、查询各班各科分数最高的学生学号,姓名,班级名称,科目名称,分数:

MySQL>

 select stu.stuID,stu.stuName,c.classID,c.className, sc.score from class c,student stu,
 score sc where c.classID=stu.classID and stu.stuID=sc.stuID order by c.classID,stu.stuID;

 

 

 

 

抱歉!评论已关闭.