首页 > 解决方案 > 编写语句以使用 group by 而不是 group by 表达式创建报告错误

问题描述

问题:使用带有 GROUP BY 和“HAVING”条件的聚合函数,列出所有课程及其每门课程的出席人数超过 5 人的总出席人数

陈述:

SELECT SUM(NO_OF_ATTENDANCES), COURSE_ID, EXERCISE_TYPE, COURSE_LOC
FROM I_COURSE
GROUP BY COURSE_LOC
HAVING SUM(NO_OF_ATTENDANCES) > 5;

请帮助我并告诉我出了什么问题以及为什么会出现错误。

表名是 I_COURSE

属性有:COURSE_ID、EXERCISE_TYPE、COURSE_LOC、NO_OF_ATTENDANCES

标签: mysqlsqloracle

解决方案


您只需按以下方式分组COURSE_ID

SELECT SUM(NO_OF_ATTENDANCES), COURSE_ID
FROM I_COURSE
GROUP BY COURSE_ID
HAVING SUM(NO_OF_ATTENDANCES) > 5;

首先,COURSE_ID 列足以满足您想要的结果,并且不可能在 SELECT 列表中包含那些不在 GROUP BY 列表中的 [non-aggregated] 列。


推荐阅读