1. 문제
2. 문제 풀기 전에,
- SUBWAY_DISTANCE 👉🏻 노선, 총 누계 거리, 평균 역 사이 거리 조회
- 1) 노선 별 그룹화 2) 총 누계 거리는 소수 둘째 자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 3) ‘km’ 단위 붙이기
- 총 누계 거리 DESC
- 문자열을 합체 및 연결해 주는 CONCAT 함수 생각하기
3. 테이블
SUBWAY_DISTANCE
4. 풀이 과정
1단계) 총 누계 거리는 역 사이의 거리의 총합을 의미하는데, SUM() 함수를 이용하여 총합을 계산해 준다. 그리고 AVG() 함수를 이용하여 평균 역 사이의 거리를 계산해 준다.
계산한 두 값은 ROUND() 함수를 이용하여 소수 둘째 자리와 소수 셋째 자리에서 반올림 해준다.
SELECT ROUTE,
ROUND(SUM(D_BETWEEN_DIST), 1) AS TOTAL_DISTANCE,
ROUND(AVG(D_BETWEEN_DIST), 2) AS AVERAGE_DISTANCE
FROM SUBWAY_DISTANCE
2단계) 문자열을 합체 및 연결해 주는 CONCAT() 함수를 이용하여 총합과 평균을 계산한 값에 ‘km’ 단위를 붙여준다.
👨🏻🏫 CONCAT() = SELECT CONCAT(str1, str2, …)
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
3단계) 노선별로 계산값을 조회하기 위해 ROUTE를 기준으로 그룹화를 해준다.
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
4단계) 총 누계 거리를 기준으로 내림차순 정렬을 해준다.
여기서 TOTAL_DISTANCE로 정렬하지 않은 이유는 해당 컬럼에 문자열 ‘km’이 포함되어 있기 때문이다.
때문에 숫자열만 포함된 ‘ROUND(SUM(D_BETWEEN_DIST), 1)’를 기준으로 정렬을 해준다.
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;
5. 완성 코드
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;
🔗 관련 링크
프로그래머스 문제 - https://school.programmers.co.kr/learn/courses/30/lessons/284531
CONCAT 함수 설명 - https://sesok808.tistory.com/491
728x90
'Skills > SQL' 카테고리의 다른 글
프로그래머스: 부서별 평균 연봉 조회하기 (MySQL) (0) | 2024.03.13 |
---|---|
프로그래머스: 업그레이드 할 수 없는 아이템 구하기 (MySQL) (0) | 2024.03.13 |
프로그래머스: 연도별 평균 미세먼지 농도 조회하기 (MySQL) (1) | 2024.03.12 |
프로그래머스: 조건에 맞는 사원 정보 조회하기 (MySQL) (0) | 2024.03.09 |
프로그래머스: ROOT 아이템 구하기 (MySQL) (1) | 2024.03.09 |