SQL group by,我做错了什么?
情况如下: 按平均大学入学率查找前5个社区地区 数据库存储为学校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:[
%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;
说明:
:所有学校的总入学人数 位于单个总和(大学入学人数)
社区\区域\名称中的李>
:为SUM()的结果指定一个名称,以便我们稍后在AS TOTAL_registered
子句中方便地引用它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
;