본문 바로가기
Data Engineering/SQL

[Oracle] TRUNC과 GROUP BY 이용한 구간별 통계 조회 쿼리

by jangThang 2024. 1. 11.
반응형

 가격대 별 상품 개수 구하기 예제를 통해서, 구간별로 통계를 구하는 쿼리를 작성해봅니다. 아래 예제에서는 집계함수 COUNT를 사용합니다.

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     예제 문제는 프로그래머스 '가격대 별 상품 개수 구하기'를 참조합니다.

     

    PRODUCT 테이블

    PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 작성

     

     

     

    2. 문제 풀이

     GROUP BY 구문은 지정된 칼럼들의 값이 같은 것끼리 묶어서 집계할 수 있도록 해줍니다.

     그룹별로 묶어서 통계를 내는 데에 사용하며, 해당 구문의 자세한 설명은 아래에서 찾아보실 수 있습니다.

     

    2022.03.06 - [Data Engineering/SQL] - [SQL] 특정 칼럼으로 묶기 Group by - 오라클(Oracle)

     

    [SQL] 특정 칼럼으로 묶기 Group by - 오라클(Oracle)

    [ Contents ] 1. 문제 (링크 참조) 코딩테스트 연습 - 고양이와 개는 몇 마리 있을까 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며

    star7sss.tistory.com

     

     위 문제에서는 만원 단위로 구해달라고 했으니, 1000원 이하를 절삭한 후 GROUP BY절로 묶어줘야 합니다.

     예를 들어 13000원과 19000원을 천의 자리에서 절삭하면 둘 다 10000원으로, 같이 묶이게 됩니다.

     

     

    TRUNC(숫자, 절삭할 자릿수)
    SELECT
        TRUNC(123.45, 2)
        , TRUNC(123.45, 1)
        , TRUNC(123.45)
        , TRUNC(123.45, -1)
        , TRUNC(123.45, -2)
    FROM DUAL

     

     특정 자릿수 미만을 절삭하는 오라클 함수는 TRUNC입니다.

     TRUNC(123.45, 1)는 123.45에서 소수점 아래 첫째짜리 밑을 절삭한다는 뜻으로, 123.1이 됩니다.

     자릿수가 음수인 경우에는 소수점 윗 자릿수를 뜻하며, -1은 1의 자리 절삭이고 -2는 10의 자리 절삭입니다.

     

     

    반응형

     

    3. 코드

    -- 코드를 입력하세요
    SELECT 
        TRUNC(PRICE, -4) AS PRICE_GROUP
        , COUNT(*) AS PRODUCTS
    FROM PRODUCT
    GROUP BY TRUNC(PRICE, -4)
    ORDER BY PRICE_GROUP

     위 문제에서는 10000원 단위로 나타내야 하므로, 천의 자리에서 절삭해주면 됩니다.

     

     

     

     

    star가 되고나서 Tistory

    반응형

    댓글