SQL group by,我做错了什么?

SQL group by,我做错了什么?,sql,Sql,情况如下: 按平均大学入学率查找前5个社区地区 数据库存储为学校 %sql SELECT COLLEGE_ENROLLMENT, COMMUNITY_AREA_NAME FROM SCHOOLS GROUP BY COLLEGE_ENROLLMENT; 我知道这会给我社区的大学入学率,但我得到以下错误信息: (ibm_db_dbi.ProgrammingError)ibm_db_dbi::ProgrammingError:Exception('SQLNumResultCols failed:[

情况如下:

按平均大学入学率查找前5个社区地区

数据库存储为学校

%sql SELECT COLLEGE_ENROLLMENT, COMMUNITY_AREA_NAME FROM SCHOOLS GROUP BY COLLEGE_ENROLLMENT;
我知道这会给我社区的大学入学率,但我得到以下错误信息:

(ibm_db_dbi.ProgrammingError)ibm_db_dbi::ProgrammingError:Exception('SQLNumResultCols failed:[ibm][CLI Driver][DB2/linux8664]SQL0119N以“COMMUNITY_AREA_NAME”开头的表达式在SELECT子句、HAVING子句或ORDER BY子句中指定的值未在GROUP BY子句中指定,或者在SELECT子句、HAVING子句或ORDER BY子句中使用列函数指定,并且未指定GROUP BY子句。SQLSTATE=42803\r SQLCODE=-119')

谁能告诉我我做错了什么


谢谢大家!

使用
groupby
时,在
SELECT
子句之后放置的任何内容都必须用于
groupby
子句或聚合函数,如
SUM()
。在您的情况下,您需要将
社区\u区域\u名称
放在
GROUP BY
子句中,或将其从
SELECT
子句中删除,以消除错误。也就是说,我不认为这个查询是您想要的-我会这样做:

SELECT COMMUNITY_AREA_NAME, SUM(COLLEGE_ENROLLMENT) AS TOTAL_ENROLLED FROM SCHOOLS GROUP BY COMMUNITY_AREA_NAME, ORDER BY TOTAL_ENROLLED DESC;
说明:

  • 总和(大学入学人数)
    :所有学校的总入学人数 位于单个
    社区\区域\名称中的
    
  • AS TOTAL_registered
    :为SUM()的结果指定一个名称,以便我们稍后在
    ORDER BY
    子句中方便地引用它
  • ORDER BY TOTAL_registered DESC
    :按
    TOTAL_registered
    对输出进行排序,并输入最大的数字 在顶端

尝试以下方法,它应该会起作用

按平均大学入学率查找前五大社区。

SELECT 
    COMMUNITY_AREA_NAME,
    AVG(COLLEGE_ENROLLMENT) AS AVG_ENROLL
FROM SCHOOLS 
GROUP BY 
     COMMUNITY_AREA_NAME
ORDER BY
    AVG(COLLEGE_ENROLLMENT) DESC
LIMIT 5
;