Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何返回SQL查询中低于平均值的学生_Sql_Oracle - Fatal编程技术网

如何返回SQL查询中低于平均值的学生

如何返回SQL查询中低于平均值的学生,sql,oracle,Sql,Oracle,对于我的作业,我们必须返回低于平均值的学生人数,学生在第86节,成绩类型代码为“FI”。我觉得我的结构正确,因为我能够返回所有结果,但我无法确定如何使他们低于平均值。这是我的东西,谢谢 编辑:必须使用子查询来实现此目标 SELECT COUNT(g.student_id) BELOW_AVERAGE FROM grade g WHERE g.section_id= 86 AND g.grade_type_code = 'FI' HAVING AVG(numeric_grade) = (SEL

对于我的作业,我们必须返回低于平均值的学生人数,学生在第86节,成绩类型代码为“FI”。我觉得我的结构正确,因为我能够返回所有结果,但我无法确定如何使他们低于平均值。这是我的东西,谢谢

编辑:必须使用子查询来实现此目标

SELECT COUNT(g.student_id) BELOW_AVERAGE
FROM grade g
WHERE g.section_id= 86
  AND g.grade_type_code = 'FI'
HAVING AVG(numeric_grade) = (SELECT AVG(below_avg)
                             FROM
                                 (SELECT AVG(g.numeric_grade) below_avg
                                  FROM grade g
                                  WHERE g.section_id = 86
                                    AND g.grade_type_code = 'FI'))

使用
AVG
作为分析函数,这样您就不必查询表两次:

SELECT COUNT( DISTINCT student_id ) AS number_below_average
FROM   (
  SELECT student_id,
         numeric_grade,
         AVG( numeric_grade ) OVER () as avg_numeric_grade
  FROM   grade
  WHERE  section_id = 86
  AND    grade_type_code = 'FI'
)
WHERE  numeric_grade < avg_numeric_grade
然后两个查询都会输出:

|低于平均数| | -------------------: | | 5 |
dbfiddle

这算是子查询吗?对不起,我们应该在问题中指定使用子查询吗?@TaylorDamron updated非常感谢。我会多看一点,这样我会更理解它,因为我的老师解释的方式是我们需要选择陈述,所以我很高兴事实并非如此。我不确定我是否得到了正确的答案,但我很难解释这个问题,正如你所说的“平均值”这是没有意义的,因为一旦你有了第一个平均值,你就有了一个单一的值,所以第二个平均值将是相同的值(如果你的老师希望你使用
HAVING
子句,那么这意味着比单一平均值更复杂的事情)。如果您的问题中包含一些示例数据和预期输出,这样我们就可以了解预期结果,这会有所帮助。 | NUMBER_BELOW_AVERAGE | | -------------------: | | 5 |