[프로그래머스 Level.2] 노선별 평균 역 사이 거리 조회하기

오형상·2024년 5월 9일
0

프로그래머스_SQL

목록 보기
4/12
post-thumbnail

문제

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

소스코드

-- 코드를 작성해주세요
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

배운점

1. CONCAT 함수

CONCAT 함수는 SQL에서 사용되며, 여러 문자열을 결합하여 하나의 문자열로 만드는 역할을 합니다.

SELECT CONCAT('Hello', ' ', 'world'); -- 'Hello world'

2. ROUND 함수

ROUND 함수는 숫자를 지정된 자릿수로 반올림하는 역할을 합니다. 두 번째 인자로 지정된 자릿수까지 반올림하여 결과를 출력합니다.

SELECT ROUND(3.14159, 2); -- 3.14

3. ORDER BY 주의점

ORDER BY
    TOTAL_DISTANCE DESC

역 간 거리의 총 합이나 평균을 ROUND 함수로 반올림한 후에 CONCAT 함수로 문자열로 변환했기 때문에 이 값들은 문자열로 취급됩니다. 위와 같이 사용하면 숫자가 아닌 문자열로 정렬이 이루어집니다.

이를 해결하기 위해서는 아래와 같이 ORDER BY 절에서 ROUND 함수로 반올림한 후에 문자열로 변환하는 것이 아니라, 그냥 ROUND 함수를 사용한 숫자 값을 기준으로 정렬해야 합니다. 따라서 ORDER BY 절에서는 ROUND(SUM(D_BETWEEN_DIST),1)를 그대로 사용하여 숫자 값으로 정렬해야 합니다.

ORDER BY
    ROUND(SUM(D_BETWEEN_DIST),1) DESC

0개의 댓글