美文网首页MySQL数据库知识点
数据库:查询出两门及两门以上不及格者的平均成绩

数据库:查询出两门及两门以上不及格者的平均成绩

作者: lconcise | 来源:发表于2018-08-08 11:30 被阅读2次

查询出两门及两门以上不及格者的平均成绩(注意是所有科目的平均成绩)

捕获.PNG

sql

-- ----------------------------
-- Table structure for grade_table
-- ----------------------------
DROP TABLE IF EXISTS `grade_table`;
CREATE TABLE `grade_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `subject` varchar(255) DEFAULT NULL,
  `score` double(255,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of grade_table
-- ----------------------------
INSERT INTO `grade_table` VALUES ('1', '张三', '数学', '80');
INSERT INTO `grade_table` VALUES ('2', '张三', '语文', '60');
INSERT INTO `grade_table` VALUES ('3', '张三', '英语', '50');
INSERT INTO `grade_table` VALUES ('4', '李四', '数学', '56');
INSERT INTO `grade_table` VALUES ('5', '李四', '语文', '55');
INSERT INTO `grade_table` VALUES ('6', '李四', '英语', '88');
INSERT INTO `grade_table` VALUES ('7', '王五', '数学', '60');
INSERT INTO `grade_table` VALUES ('8', '王五', '语文', '56');
INSERT INTO `grade_table` VALUES ('9', '王五', '英文', '32');

Solution:
正确的解决方法:

SELECT
    name,
    FORMAT(avg(score), 2) AS avgscore
FROM
    grade_table
GROUP BY
    NAME
HAVING
    SUM(score < 60) >= 2;
捕获.PNG

下面是我做的过程出错的一种解法,列出来供大家参考:

SELECT
    name,
    FORMAT(avg(score), 2) AS avgscore
FROM
    grade_table
GROUP BY
    NAME
HAVING
    count(score < 60) >= 2;
捕获.PNG

问题原因:
这里不应该使用count()函数,count()达不到想要的结果,并不是条件的问题,而是无论count()里的表达式是什么都会数一行,但是sum(score<60) 可以达到目的。

count(a),无论a是什么,都是数一行;count()时,每遇到一行,就输一个a,跟条件无关

相关文章

  • 数据库:查询出两门及两门以上不及格者的平均成绩

    查询出两门及两门以上不及格者的平均成绩(注意是所有科目的平均成绩) sql Solution:正确的解决方法: 下...

  • SQL经典练习(11~14)

    查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩  分析:两门及以上课程,那就是成绩表中课程数目大于等于2...

  • SQL练习题2

    接上第一篇SQL之练习题,详细数据表见上篇文章。 11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 ...

  • 15 20171121

    涛的期中成绩出来了,不很理想。理科两门考的不错,跟走班(尖子班)成绩相平,文科两门拖了平均分的后腿。他已显懊悔,晚...

  • PAT-The best rank

    题目介绍:给n个考生的3门课 的成绩,还有一个平均分有3门可成绩得到。有m个查询,给一个考生的id ,输出他最高的...

  • 还有两门成绩没有发

    心焦心塞心痛心虚 啊!又想知道又不想知道谁和我感觉一样啊

  • SQL每日一题(2020-06-24)

    题目: 用一条SQL 语句 查询出每门课都大于80 分的学生姓名,表格样式及数据如下: 结果为 请至少使用两种方法...

  • 数据库第十天

    查询部门平均工资在2500元以上的部门名称及平均工资。 查询员工岗位中不是以“SA”开头并且平均工资在2500元以...

  • Mysql常见50条数据查询

    1:-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 -- 3、查询平均成绩大于等于60分的同...

  • SQL一张表中查询任意两列大于某个值

    一张成绩表中查询出任意两门成绩大于60分的同学的名字。 我的内心有点慌乱,“任意”两个字在我听来就像“随便”“无所...

网友评论

    本文标题:数据库:查询出两门及两门以上不及格者的平均成绩

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