[Programmers/mysql] 284531: 노선별 평균 역 사이 거리 조회하기

songeunm·2024년 9월 6일

PS - sql

목록 보기
7/58
post-thumbnail

문제

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;

마무리

사실 문제를 풀 당시 버스에서 멀미가 심해 얼마 고민 못하고 덮었었는데 나중에 다시 펼쳐보니 어디가 문제인지 바로 짚어낼 수 있었다!
역시 시간을 좀 지나고 리뷰하면 문제점이 바로 보이기도 하는 것 같다.

profile
데굴데굴 구르는 개발자 지망생

0개의 댓글