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

지누초이·2024년 3월 28일

프로그래머스

목록 보기
25/37
post-thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/284531


노트

노선 별 총 누계 거리 , 평균 역 사이 거리 를 계산해야 한다.
각 키워드 별로 정리하면 다음과 같다.

-- 총 누계 거리
CONCAT(ROUND(SUM(D_BETWEEN_DIST), 1), 'km') AS TOTAL_DISTANCE

-- 평균 역 사이 거리
CONCAT(ROUND(AVG(D_BETWEEN_DIST), 2), 'km') AS AVERAGE_DISTANCE

-- 노선 별
GROUP BY
    ROUTE

주의해야할 것은
ROUND(SUM())SUM(ROUND()) 를 바꿔쓰면 안된다.
합친 결과를 반올림하는 것과 반올림 한 것을 합치는 것은 엄연히 다른 결과가 나올 수 있다.

또 한 가지 주의할 것은
총 누계 거리 를 기준으로 내림차순이다.

ORDER BY
    TOTAL_DISTANCE DESC

위에서 사용한 alias를 그대로 가져오면 틀린 값이 나온다.
그 이유는 TOTAL_DISTANCE 가 더 이상 숫자가 아니기 때문이다.

따라서 아래와 같이

ORDER BY
    SUM(D_BETWEEN_DIST) DESC

반올림하기 전 진짜 누계 거리를 가지고 내림차순 정렬을 해야한다.


정답

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
    SUM(D_BETWEEN_DIST) DESC

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글