美文网首页
每门课成绩都大于80的学生姓名

每门课成绩都大于80的学生姓名

作者: lconcise | 来源:发表于2019-03-05 13:36 被阅读0次
image.png

创建表并插入基础数据

DROP TABLE IF EXISTS `student2`;
CREATE TABLE `student2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `course` varchar(255) DEFAULT NULL,
  `score` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student2
-- ----------------------------
INSERT INTO `student2` VALUES ('1', '张三', '语文', '81');
INSERT INTO `student2` VALUES ('2', '张三', '数学', '75');
INSERT INTO `student2` VALUES ('3', '李四', '语文', '76');
INSERT INTO `student2` VALUES ('4', '李四', '数学', '90');
INSERT INTO `student2` VALUES ('5', '王五', '语文', '81');
INSERT INTO `student2` VALUES ('6', '王五', '数学', '100');
INSERT INTO `student2` VALUES ('7', '王五', '英语', '90');

Solution 1 :

select name from student2 GROUP BY name HAVING min(score)>80;
  1. group by 根据name 对数据分组
  2. min(score)>80 分组后 ,分组中分数最低分数大于80,表明该学生所有成绩都大于80

Solution 2:

select distinct name from student2 where name not in(select distinct name from student2 where score <= 80);
  1. 采用逆向思维
  2. select distinct name from student2 where score <= 80 查找出分数低于80的学生
  3. not in 不存在 分数低于80的学生的列表里,就是每门课成绩大于80的学生姓名

Solution 3:

select name,count(id) as number from student2 group by name;      p1
 
select name,sum(score>80) as number from student2 group by name;  p2

select p1.name from (select name,count(id) as number from student2 group by name) p1 ,(select name,sum(score>80) as number from student2 group by name) p2 where p1.name = p2.name and p1.number = p2.number;
  1. 查找每个学生对应课程的个数 p1
  2. 查找每个学生对应课程分数大于80的个数 p2
  3. 关联 p1,p2,姓名相同,课程数相同,就说明该学生每门课成绩都大于80分

相关文章

  • 查询各个科目成绩前三的记录

    1. 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名 理解:分数最小的那门课大于80,自然每门课都大于...

  • 每门课成绩都大于80的学生姓名

    创建表并插入基础数据 Solution 1 : group by 根据name 对数据分组 min(score)>...

  • SQL

    1.【转】一个SQL查询出每门课程的成绩都大于80的学生姓名 https://www.cnblogs.com/ho...

  • 【SQL笔记】sql 练习题

    1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu张三 ...

  • SQL面试题

    1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu 张三 语文...

  • sql常见题-20180223

    1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu 张三 语文...

  • 关系型数据库-sql语句练习

    1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名name kecheng fenshu 张三 语文 ...

  • 常犯错误:Subquery returns more than

    1、用一条SQL语句查询出mianshi1表中每门课都大于80分的学生姓名 报错:Subquery returns...

  • sql

    常见面试sql 1.用一条SQL语句查询出每门课都大于80分的学生姓名 name kecheng fenshu 张...

  • SQL面试题书目录

    SQL面试题 用一条SQL语句,查询出每门课都大于80分的学生姓名 删除除了自动编号不同, 其他都相同的学生冗余信...

网友评论

      本文标题:每门课成绩都大于80的学生姓名

      本文链接:https://www.haomeiwen.com/subject/xibnuqtx.html