프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설계
1. 노선으로 그룹화한 후, SUM과 AVG를 이용하여 총 누계 거리, 평균 역 사이 거리를 구한다.
2. ROUND와 CONCAT을 이용하여 주어진 요구사항에 맞게 출력한다.
3. CONCAT을 사용하게 되면 5.4km는 문자열이 된다.
문제 풀이
오답
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를 기준으로 하면 얘가 문자열이기 때문에 총 누계 거리를 기준으로 정렬되지 않는다.
정답
-- 코드를 작성해주세요
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;
정리
CONCAT을 사용하면 문자열이 되므로 ORDER BY에서 원하는 기준으로 정렬이 되지 않을 수 있다.
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스 LV2][SQL] 중복 제거하기 (0) | 2025.03.29 |
---|---|
[프로그래머스 LV2][SQL] 가격대 별 상품 개수 구하기 (0) | 2025.03.28 |
[프로그래머스 LV2][SQL] 업그레이드 된 아이템 구하기 (0) | 2025.03.28 |
[프로그래머스 LV2][SQL] 조건에 맞는 개발자 찾기 (0) | 2025.03.27 |
[프로그래머스 LV2][SQL] 카테고리 별 상품 개수 구하기 (0) | 2025.03.24 |