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
'SQL' 카테고리의 다른 글
자동차 평균 대여 기간 구하기 ( 프로그래머스, Lv.2, MySQL ) (3) | 2024.10.17 |
---|---|
연도 별 평균 미세먼지 농도 조회하기 (0) | 2024.10.10 |
특정 단위별 컬럼 그룹화 하기 (1) | 2024.10.10 |
ORDER BY 컬럼 우선순위 설정 (0) | 2024.10.10 |
ORDER BY의 alias가 문자열 일 때 ( MySQL ) (0) | 2024.10.10 |