- [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 노선별 평균 역 사이 거리 조회하기2024년 10월 22일
- 쪼시
- 작성자
- 2024.10.22.:01
반응형https://school.programmers.co.kr/learn/courses/30/lessons/284531
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 노선별 평균 역 사이 거리 조회하기
문제 설명
SUBWAY_DISTANCE 테이블은 서울지하철 2호선의 역 간 거리 정보를 담은 테이블입니다. SUBWAY_DISTANCE 테이블의 구조는 다음과 같으며 LINE, NO, ROUTE, STATION_NAME, D_BETWEEN_DIST, D_CUMULATIVE는 각각 호선, 순번, 노선, 역 이름, 역 사이 거리, 노선별 누계 거리를 의미합니다.
Column name Type Nullable LINE VARCHAR(10) FALSE NO VARCHAR(50) FALSE ROUTE NUMBER FALSE STATION_NAME VARCHAR(100) FALSE D_BETWEEN_DIST NUMBER FALSE D_CUMULATIVE NUMBER FALSE
문제
SUBWAY_DISTANCE 테이블에서 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회하는 SQL문을 작성해주세요.
총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻합니다. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 해주시고, 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 한 뒤 단위(km)를 함께 출력해주세요.
결과는 총 누계 거리를 기준으로 내림차순 정렬해주세요.
예시
SUBWAY_DISTANCE 테이블이 다음과 같을 때
* 생략 *
SQL을 실행하면 다음과 같이 출력되어야 합니다.
ROUTE TOTAL_DISTANCE AVERAGE_DISTANCE 신정지선 6km 1.5km 성수지선 5.4km 1.35km
문제 풀이
- 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회
- 총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합
- 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 명명
- 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림
- 단위(km)를 함께 출력
- 총 누계 거리를 기준으로 내림차순 정렬
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() 함수를 사용해서 결과 값에 'km'를 붙여준다.
- 총 누계 거리는 역 사이 거리의 총 합 SUM()함수로 총 합을 구한 뒤 AS TOTAL_DISTANCE로 명명
- 평균 역 사이 거리는 AVG()함수로 평균을 구한 뒤 AS AVERAGE_DISTANCE로 명명
- 노선별로 나눠야 하기 때문에 ROUTE로 그룹화
- 총 누계 거리를 기준으로 내림차순 DESC 정렬
* 주의사항 : 처음에는 ORDER BY TOTAL_DISTANCE DESC 로 내림차순 했는데 계속 실패 했다.
그 이유는 CONCAT으로 km가 추가된 상태에서 정렬이 되려다 보니 오류가 난다고 한다.
따라서 CONCAT함수를 쓰기 전 총 누계 거리 값을 기준으로 내림차순 DESC 한다.
실행 결과
ROUTE TOTAL_DISTANCE AVERAGE_DISTANCE 신정지선 6km 1.5km 성수지선 5.4km 1.35km 반응형'코딩 테스트 > SQL' 카테고리의 다른 글
[프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 월별 잡은 물고기 수 구하기 (0) 2024.10.22 [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 물고기 종류 별 잡은 수 구하기 (0) 2024.10.22 [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 3] 부서별 평균 연봉 조회하기 (0) 2024.10.22 [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 조건에 맞는 사원 정보 조회하기 (1) 2024.10.22 [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 가격대 별 상품 개수 구하기 (0) 2024.10.22 다음글이전글이전 글이 없습니다.댓글