【发布时间】:2019-05-27 05:34:31
【问题描述】:
我有一个小问题。我正在 Coursera 上学习数据科学 SQL 课程,并且有以下任务:
问题 7:使用 INNER JOIN,找到困难为 96 的社区区域的最低“学生平均出勤率”。
我解决了这样的问题:
SELECT S.AVERAGE_STUDENT_ATTENDANCE, S.COMMUNITY_AREA_NAME, C.HARDSHIP_INDEX
FROM CHICAGO_PUBLIC_SCHOOLS as S
INNER JOIN CENSUS_DATA as C
ON C.COMMUNITY_AREA_NUMBER = S.COMMUNITY_AREA_NUMBER
WHERE C.HARDSHIP_INDEX = 96
ORDER BY S.AVERAGE_STUDENT_ATTENDANCE ASC
LIMIT 1;
但是,最初我想在没有ORDER BY 和LIMIT 的情况下优雅地解决它。
MIN(S.AVERAGE_STUDENT_ATTENDANCE) 函数对我不起作用 - 我收到一个错误:
An expression starting with "HARDSHIP_INDEX" specified in a SELECT clause, HAVING clause, or ORDER BY clause is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause with a column function and no GROUP BY clause is specified.. SQLCODE=-119, SQLSTATE=42803, DRIVER=4.24.92
有没有办法用 MIN 解决问题?
非常感谢。
【问题讨论】:
-
为什么不使用 LIMIT 和 ORDER BY?这是一种合法的方法,除非您想获得联系(即超过 1 行相同的最小值)
标签: mysql sql inner-join min