[SQL] 노선별 평균 역 사이 거리 조회하기(GROUP BY) ✅

Jaewon Lim·2026년 1월 3일

📝 문제 설명

SUBWAY_DISTANCE 테이블은 서울지하철 2호선의 역 간 거리 정보를 담은 테이블입니다. SUBWAY_DISTANCE 테이블의 구조는 다음과 같으며 LINE, NO, ROUTE, STATION_NAME, D_BETWEEN_DIST, D_CUMULATIVE는 각각 호선, 순번, 노선, 역 이름, 역 사이 거리, 노선별 누계 거리를 의미합니다.

Column nameTypeNullable
LINEVARCHAR(10)FALSE
NONUMBERFALSE
ROUTEVARCHAR(50)FALSE
STATION_NAMEVARCHAR(100)FALSE
D_BETWEEN_DISTNUMBERFALSE
D_CUMULATIVENUMBERFALSE

❓ 문제

SUBWAY_DISTANCE 테이블에서 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회하는 SQL문을 작성해주세요.

총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻합니다. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 해주시고, 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 한 뒤 단위(km)를 함께 출력해주세요.
결과는 총 누계 거리를 기준으로 내림차순 정렬해주세요.

📖 예시

SUBWAY_DISTANCE 테이블이 다음과 같을 때

LINENOROUTESTATION_NAMED_BETWEEN_DISTD_CUMULATIVE
2호선45성수지선용답2.351.1
2호선46성수지선신답1.052.1
2호선47성수지선용두(동대문구청)0.953.0
2호선48성수지선신설동1.254.2
2호선49신정지선도림천1.055.2
2호선50신정지선양천구청1.756.9
2호선51신정지선신정네거리1.958.8
2호선52신정지선까치산1.460.2

SQL을 실행하면 다음과 같이 출력되어야 합니다.

ROUTETOTAL_DISTANCEAVERAGE_DISTANCE
신정지선6km1.5km
성수지선5.4km1.35km

💻 코드

내코드

WITH TOT_DIS AS(
    SELECT ROUTE 
        ,COUNT(ROUTE) AS NUM_ROW
        ,SUM(D_BETWEEN_DIST) AS TOTAL_DISTANCE_NUM
    FROM SUBWAY_DISTANCE
    GROUP BY ROUTE
)
SELECT ROUTE
    ,CONCAT(ROUND(TOTAL_DISTANCE_NUM, 2), 'km') AS TOTAL_DISTANCE
    ,CONCAT(ROUND(TOTAL_DISTANCE_NUM / NUM_ROW, 2), 'km') AS AVERAGE_DISTANCE 
FROM TOT_DIS
ORDER BY TOTAL_DISTANCE_NUM DESC

🔍 분석

  • ORDER BY 에서 TOTAL_DISTANCE 로 하면 안됨. 'km' 가 붙어 있기 때문에 수치 비교 불가.

0개의 댓글