Allen's 데이터 맛집

SQL : 가격대 별 상품 개수 구하기 - CASE 대신 TRUNCATE 본문

SQL/SQL

SQL : 가격대 별 상품 개수 구하기 - CASE 대신 TRUNCATE

Allen93 2023. 12. 28. 02:38

가격대 별 상품 개수 구하기

 

 

위와 같은 문제에서 당연히 CASE문을 사용했지만 만약에 해당 PRICE값들의 범주가 많다면 일일이 전부 쳐야 하는 번거로움이 있습니다.

 


 

CASE 문 사용

SELECT
    CASE 
        WHEN price >= 10000 AND price < 20000 THEN 10000
        WHEN price >= 20000 AND price < 30000 THEN 20000
        WHEN price >= 30000 AND price < 40000 THEN 30000
        WHEN price >= 40000 AND price < 50000 THEN 40000
        WHEN price >= 50000 AND price < 60000 THEN 50000
        WHEN price >= 60000 AND price < 70000 THEN 60000
        WHEN price >= 70000 AND price < 80000 THEN 70000
        WHEN price >= 80000 AND price < 90000 THEN 80000
        END AS PRICE_GROUP
    ,COUNT(product_id) AS PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1

 

 

 

 

TRUNCATE 사용

이렇게 TRUNCATE(버림)을 사용하여 가격을 만 단위로 나눈 후 소수점 이하를 제거하고, 그 결과를 다시 만으로 곱하여 가격을 만 단위로 그룹화한다면 범주가 얼마나 길든 짧은 쿼리로 완성시킬 수 있습니다.

SELECT  
    TRUNCATE((price / 10000),0) * 10000 AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM 
    PRODUCT
GROUP BY 
    PRICE_GROUP
ORDER BY 
    PRICE_GROUP ASC

 

 

결과:

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/131530

 

프로그래머스

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

programmers.co.kr