문제 링크
개념
ORDER BY
문제에 적용하면…
SELECT ROUTE, CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') AS 'TOTAL_DISTANCE',
CONCAT(ROUND(AVG(D_BETWEEN_DIST), 2), 'km') AS 'AVERAGE_DISTANCE'
FROM SUBWAY_DISTANCE
GROUP BY ROUTE
ORDER BY TOTAL_DISTANCE DESC;처음에 적었던 위의 답은 왜 틀렸을까?
TOTAL_DISTANCE는 CONCAT을 하여 String이기 때문에 문자로 정렬되며, 문자열 정렬은 사전순이다. 따라서 총 누계 거리를 기준으로 내림차순 하려면 ROUND(SUM(D_BETWEEN_DIST)로 ORDER BY 해야한다.
확장 개념
SQL 명령어의 논리적 실행 순서
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT (프로젝션)
8. DISTINCT
9. ORDER BY
10. LIMIT제출 답안
SELECT ROUTE, CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') AS 'TOTAL_DISTANCE',
CONCAT(ROUND(AVG(D_BETWEEN_DIST), 2), 'km') AS 'AVERAGE_DISTANCE'
FROM SUBWAY_DISTANCE
GROUP BY ROUTE
ORDER BY ROUND(SUM(D_BETWEEN_DIST), 1) DESC;Share article