[SQL] 284531 노선별 평균 역 사이 거리 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/284531
1. 문제
- 어려운 건 없지만 'km' 단위 붙이는 부분이 생소함 → CONCAT 함수 사용
- ROUND 함수는 두 번째 인자로 표시할 자릿수 들어감
예) 소수점 셋째 자리에서 반올림하면 둘째자리까지 표시하니까 2를 인자로 받는다.
2. 오답정리
-- 코드를 작성해주세요
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;
틀린 이유
SELECT 절에 CONCAT으로 단위를 붙이면 문자열이 되기 때문에 바로 ORDER BY 하면 숫자 기준이 아닌 문자열 기준으로 정렬되기 때문이다. 단위를 붙이면서도 서브쿼리 없이 쓰기 위해서는 ORDER BY절에서 계산식 그대로 가져오면 숫자로 인식되어 정렬이 가능하다.
3. 정답쿼리
-- 코드를 작성해주세요
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;
ORDER BY절 컬럼명 → 계산식으로 수정해서 해결했다