본문 바로가기
SQL

노선별 평균 역 사이 거리 조회하기

by 익명의 문과 개발자 2024. 10. 23.
728x90
728x90

 

이번 문제는 다 잘 풀고, 테스트 케이스까지 맞는데 제출만 하면 틀렸다고 나오는

다소 답답한 문제였다..

문제를 아무리 읽어봐도 이유를 모르겠어서 찾아보게 되었다.

 

일단 틀린 경우의 코드부터 확인해보자.

 

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;

 

이 경우의 문제점이 ORDER BY에서 정렬을 해줄 때, TOTAL_DISTANCE가

ROUND(SUM(D_BETWEEN_DIST), 1)과 'km'가 합쳐져 문자열로 정렬이 되어 다른 결과가 나올 수 있다.

 

그래서 다음과 같이 수정한다면?

 

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;

 

제출 시 정답이라고 나오는 것을 확인할 수 있다.

앞으로 SELECT에서 CONCAT함수를 사용할 때 조심해야겠다는 생각이 들었다.

끝!

728x90