📌 문제 정보
- 문제 이름 : 프로그래머스 - (GROUP BY) 노선별 평균 역 사이 거리 조회하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/284531
📌 문제 요약
- SUBWAY-DISTANCE 테이블 : LINE, NO, ROUTE, STATION_NAME, D_BETWEEN_DIST, D_CUMULATIVE
- SUBWAY_DISTANCE 테이블에서 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회하는 SQL문을 작성. 총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻합니다. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 해주시고, 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 한 뒤 단위(km)를 함께 출력해주세요. 결과는 총 누계 거리를 기준으로 내림차순 정렬해주세요.
예시)
| LINE | NO | ROUTE | STATION_NAME | D_BETWEEN_DIST | D_CUMULATIVE |
| 2호선 | 45 | 성수지선 | 용답 | 2.3 | 51.1 |
| 2호선 | 46 | 성수지선 | 신답 | 1.0 | 52.1 |
| 2호선 | 47 | 성수지선 | 용두(동대문구청) | 0.9 | 53.0 |
| 2호선 | 48 | 성수지선 | 신설동 | 1.2 | 54.2 |
| 2호선 | 49 | 신정지선 | 도림천 | 1.0 | 55.2 |
| 2호선 | 50 | 신정지선 | 양천구청 | 1.7 | 56.9 |
| 2호선 | 51 | 신정지선 | 신정네거리 | 1.9 | 58.8 |
| 2호선 | 52 | 신정지선 | 까치산 | 1.4 | 60.2 |
출력)
| ROUTE | TOTAL_DISTANCE | AVERAGE_DISTANCE |
| 신정지선 | 6km | 1.5km |
| 성수지선 | 5.4km | (계산 안됨) |
📌 내 풀이 및 코드
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;
- km를 붙이는 방법을 몰랐음.
- ORDER BY에 별칭을 써도 되는줄 알았는데, 복잡한 계산식이나 CONCAT이 포함되면 직접적으로 쓰는게 안정적이라고 함.
- TOTAL_DISTANCE로 써주면 문자열로 정렬이 되기 때문에... 숫자여야 의미 있는 정렬이 되어서 숫자 함수 그대로 써주는게 안전
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** CONCAT() **
- 여러 문자열을 하나로 이어 붙이는 함수
-- 기본 문법
CONCAT(문자열1, 문자열2, ..., 문자열N)
-- 1. 문자열 이어 붙이기
SELECT CONCAT('Hello', ' ', 'World');
-- 결과: Hello World
-- 2. 숫자 + 문자열
SELECT CONCAT('Total: ', 100, '원');
-- 결과: Total: 100원
-- 3. 칼럼 값 연결하기
SELECT CONCAT(EMP_NAME, ' (', EMP_NO, ')') AS NAME_TAG
FROM HR_EMPLOYEES;
-- 결과 예: 김연주 (2020002)
-- 4. NULL 처리
SELECT CONCAT('A', NULL, 'B');
-- 결과: NULL ❌
SELECT CONCAT('A', IFNULL(NULL, ''), 'B');
-- 결과: AB ✅'CODING TEST > MySQL' 카테고리의 다른 글
| Lv2 - 연도별 대장균 크기의 편차 구하기 (0) | 2025.08.01 |
|---|---|
| Lv2 - 분기별 분화된 대장균의 개체 수 구하기 (0) | 2025.08.01 |
| Lv2 - 조건에 맞는 사원 정보 조회하기 (0) | 2025.08.01 |
| Lv2 - 조건에 맞는 개발자 찾기 (0) | 2025.07.30 |
| Lv2 - 업그레이드 된 아이템 구하기 (0) | 2025.07.30 |
