반응형
  • 티스토리 홈
  • 프로필사진
    쪼시
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
쪼시
  • 프로필사진
    쪼시
    • 분류 전체보기 (88)
      • OS (2)
        • Window (0)
        • Mac (0)
        • Linux (0)
        • Ubuntu (2)
      • Programming (5)
        • C (1)
        • C++ (0)
        • C# (0)
        • Java (0)
        • JVM Monitoring (1)
        • Python (0)
        • HTML5 (1)
        • CSS (0)
        • JavaScript (0)
        • React (0)
        • MATLAB (1)
      • DB (15)
        • CREATE (5)
        • SELECT (8)
        • UPDATE (1)
        • DELETE (1)
      • 코딩 테스트 (64)
        • C++ (2)
        • Java (0)
        • Python (0)
        • JavaScript (0)
        • SQL (62)
      • GIT (0)
      • Drone (0)
        • Model (0)
        • Info (0)
      • IT Info (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [프로그래머스][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

        문제 풀이

        1. 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 노선별로 조회
        2. 총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합
        3. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 명명
        4. 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림
        5. 단위(km)를 함께 출력
        6. 총 누계 거리를 기준으로 내림차순 정렬
        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] 물고기 종류 별 잡은 수 구하기  (1) 2024.10.22
        [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 3] 부서별 평균 연봉 조회하기  (0) 2024.10.22
        [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 조건에 맞는 사원 정보 조회하기  (2) 2024.10.22
        [프로그래머스][SQL 고득점 KIT][GROUP BY][Level 2] 가격대 별 상품 개수 구하기  (1) 2024.10.22
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바