Lv2 - 노션별 평균 역 사이 거리 조회하기

2025. 8. 1. 13:50·CODING TEST/MySQL

📌 문제 정보

- 문제 이름 : 프로그래머스 - (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
'CODING TEST/MySQL' 카테고리의 다른 글
  • Lv2 - 연도별 대장균 크기의 편차 구하기
  • Lv2 - 분기별 분화된 대장균의 개체 수 구하기
  • Lv2 - 조건에 맞는 사원 정보 조회하기
  • Lv2 - 조건에 맞는 개발자 찾기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    회고
    AWS Certification
    SQL
    AWS Certified Cloud Practitioner
    우리 fisa
    클라우드서비스개발
    baekjoon
    토익 스피킹
    CLF-C02
    Programmers
    감행
    우리fis아카데미
    COS Pro
    프로그래머스
    백준
    toeic speaking
    회고록
    java
    프로젝트 리팩토링
    우리fisa
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Lv2 - 노션별 평균 역 사이 거리 조회하기
상단으로

티스토리툴바