코딩테스트/프로그래머스

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

hwangsehee 2025. 2. 8. 18:43

문제 설명

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

Column nameTypeNullable

LINE VARCHAR(10) FALSE
NO NUMBER FALSE
ROUTE VARCHAR(50) FALSE
STATION_NAME VARCHAR(100) FLASE
D_BETWEEN_DIST NUMBER FLASE
D_CUMULATIVE NUMBER FLASE

문제

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

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


예시

SUBWAY_DISTANCE 테이블이 다음과 같을 때

LINENOROUTESTATION_NAMED_BETWEEN_DISTD_CUMULATIVE

2호선 45 성수지선 용답 2.3 51.1
2호선 46 성수지선 신답 1 52.1
2호선 47 성수지선 용두(동대문구청) 0.9 53
2호선 48 성수지선 신설동 1.2 54.2
2호선 49 신정지선 도림천 1 55.2
2호선 50 신정지선 양천구청 1.7 56.9
2호선 51 신정지선 신정네거리 1.9 58.8
2호선 52 신정지선 까치산 1.4 60.2

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

ROUTETOTAL_DISTANCEAVERAGE_DISTANCE

신정지선 6km 1.5km
성수지선 5.4km 1.35km

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

-- 코드를 작성해주세요
select route 
, concat(round(sum(d_between_dist),1),'km') total_distance 
, concat(round(avg(d_between_dist),2),'km') average_distance 
from subway_distance 
where 1=1
group by route
order by round(sum(d_between_dist),1) desc

처음 제출 할 때 

무심코 

order by 2 desc 

이렇게 했다가 ... 답안 인정이 안되어서 

질문하기 게시판에서 정렬이 

문자열 기준으로 된거 아니냐는 댓글을 보고 

아차! 했음 .

concat으로 km 를 붙였으니 

숫자 기준이 아닌 문자 기준 내림차순 정렬이 되었겠구나 .. 

해서 황급하게 바꿈 ㅎㅎ 

 

디테일을 잊지말자..!!