面試題:用一條SQL語句查詢出每門課都大於80分的學生姓名


數據表結構和數據如下:

CREATE TABLE `grade` (
  `id` int(4) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id主鍵',
  `username` varchar(255) NOT NULL COMMENT '學生姓名',
  `coursename` varchar(255) NOT NULL COMMENT '課程名稱',
  `score` tinyint(4) NOT NULL COMMENT '分數',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='grade 學生成績信息表';
INSERT INTO `grade` VALUES (1, '張三', '語文', 81);
INSERT INTO `grade` VALUES (2, '張三', '數學', 75);
INSERT INTO `grade` VALUES (3, '李四', '語文', 76);
INSERT INTO `grade` VALUES (4, '李四', '數學', 90);
INSERT INTO `grade` VALUES (5, '王五', '語文', 81);
INSERT INTO `grade` VALUES (6, '王五', '數學', 100);
INSERT INTO `grade` VALUES (7, '王五', '英語', 90);
INSERT INTO `grade` VALUES (8, '張三', '數學', 75);

 

問題1:用一條SQL語句查詢出每門課都大於80分的學生姓名

  分析:查詢每門課都大於80分,即學生min(score)>80,並且按學生姓名username分組排序

  方法一:

SELECT username FROM grade GROUP BY username HAVING MIN(score) > 80;

  方法二:

SELECT DISTINCT username FROM grade WHERE username NOT IN (SELECT DISTINCT username FROM grade WHERE score <= 80);

 

問題2::查詢平均分大於80的學生的姓名

SELECT username FROM grade GROUP BY username HAVING AVG(score) > 80;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM