暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在MySQL中,有如下表结构,其中,NAME字段代表“姓名”,SCORE字段代表“分数”。

DB宝 2017-03-28
1440

Q
题目如下所示:


有如下表结构,其中,NAME字段代表姓名SCORE字段代表分数


  1. CREATE TABLE `T1` (

  2.     `ID` DOUBLE,

  3.     `NAME` VARCHAR(300),

  4.     `SCORE` DOUBLE

  5. );

  6. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('1','N1','59');

  7. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('2','N2','66');

  8. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('3','N3','78');

  9. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('4','N1','48');

  10. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('5','N3','85');

  11. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('6','N5','51');

  12. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('7','N4','98');

  13. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('8','N5','53');

  14. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('9','N2','67');

  15. INSERT INTO `T1` (`ID`, `NAME`, `SCORE`) VALUES('10','N4','88');

1、查询单分数最高的人和单分数最低的人。

2、查询两门分数加起来的第2至5名。

3、查询两门总分数在150分以下的人。

4、查询两门平均分数介于60和80的人。

5、查询总分大于150分,平均分小于90分的人数。

6、查询总分大于150分,平均分小于90分的人数有几个。


     

A
答案如下所示:


1、查询单分数最高的人和单分数最低的人。

  1. mysql> SELECT * FROM T1 WHERE SCORE IN (SELECT MAX(SCORE)  FROM T1 UNION ALL SELECT  MIN(SCORE) FROM T1);

  2. +------+------+-------+

  3. | id   | name | score |

  4. +------+------+-------+

  5. |    4 | n1   |    48 |

  6. |    7 | n4   |    98 |

  7. +------+------+-------+

  8. 2 rows in set (0.03 sec)


2、查询两门分数加起来的第2至5名。


  1. mysql> SELECT NAME,SUM(SCORE) FROM T1 GROUP  BY NAME ORDER BY SUM(SCORE) DESC LIMIT 1,4;

  2. +------+------------+  

  3. | name | sum(score) |  

  4. +------+------------+  

  5. | n3   |        163 |   

  6. | n2   |        133 |   

  7. | n1   |        107 |   

  8. | n5   |        104 |   

  9. +------+------------+  


3、查询两门总分数在150分以下的人。

  1.  mysql> SELECT NAME, SUM(SCORE) FROM T1 GROUP  BY NAME HAVING SUM(SCORE) < 150;

  2. +------+------------+

  3. | name | sum(score) |

  4. +------+------------+

  5. | n1   |        107 |

  6. | n2   |        133 |

  7. | n5   |        104 |

  8. +------+------------+

  9. 3 rows in set (0.00 sec)



4、查询两门平均分数介于60和80的人。

  1. mysql> SELECT NAME,AVG(SCORE) FROM T1 GROUP  BY NAME HAVING AVG(SCORE) BETWEEN 60 AND 80;

  2. +------+------------+

  3. | name | avg(score) |

  4. +------+------------+

  5. | n2   |       66.5 |

  6. +------+------------+

  7. 1 row in set (0.02 sec)


5、查询总分大于150分,平均分小于90分的人数。

  1. mysql> SELECT NAME,SUM(SCORE),AVG(SCORE) FROM T1 GROUP  BY NAME HAVING SUM(SCORE)>150 AND AVG(SCORE)<90;

  2. +------+------------+------------+  

  3. | name | sum(score) | avg(score) |  

  4. +------+------------+------------+  

  5. | n3   |        163 |       81.5 |   

  6. +------+------------+------------+  

  7. 1 row in set (0.00 sec)  


6、查询总分大于150分,平均分小于90分的人数有几个。

  1. mysql> SELECT COUNT(NAME) FROM T1 GROUP  BY NAME HAVING SUM(SCORE) > 150 AND AVG(SCORE) < 90;

  2. +----------------------+

  3. | count(distinct name) |

  4. +----------------------+

  5. |                    1 |

  6. +----------------------+

  7. 1 row in set (0.04 sec)  





DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w





About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 文章内容来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处


长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

最后修改时间:2020-01-10 21:18:27
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论