
Lv. 2 / GROUP BY
구하고자 하는 내용은 어렵지 않았다.
ROUTE를 기준으로 묶어 합과 평균을 구하기만 하면 된다.
테스트케이스는 바로 통과했지만 제출 후 오답을 받았는데 이에 대해서 고민을 좀 했다.
원인은 ORDER BY 부분이었다.
이전에는 ORDER BY 2로 제출했다.
두번째 컬럼은 CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') TOTAL_DISTANCE로 작성했다.
그럼 문제가 뭘까?
CONCAT을 통해 단위인 km를 붙여줬기 때문에 type이 문자열이 되었을 것이다.
그럼 문자열을 기준으로 정렬하게 된다.
이를 피하려면 ORDER BY에 CONCAT을 붙이지 않은 수식을 써주면 되겠다.
/*
노선별 평균 역 사이 거리 조회하기
GROUP BY
*/
SELECT ROUTE,
CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') TOTAL_DISTANCE,
CONCAT(ROUND(AVG(D_BETWEEN_DIST), 2), 'km') AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
GROUP BY 1
ORDER BY ROUND(SUM(D_BETWEEN_DIST), 1) DESC;
사실 문제를 풀 당시 버스에서 멀미가 심해 얼마 고민 못하고 덮었었는데 나중에 다시 펼쳐보니 어디가 문제인지 바로 짚어낼 수 있었다!
역시 시간을 좀 지나고 리뷰하면 문제점이 바로 보이기도 하는 것 같다.