프로그래머스 코딩테스트/MySQL

[프로그래머스] 가격대 별 상품 개수 구하기 MySQL

Coding-Su 2024. 7. 6. 22:51
728x90

문제

[프로그래머스] 가격대 별 상품 개수 구하기

정답

SELECT CASE WHEN PRICE >= 80000 THEN 80000
            WHEN PRICE >= 70000 THEN 70000
            WHEN PRICE >= 60000 THEN 60000
            WHEN PRICE >= 50000 THEN 50000
            WHEN PRICE >= 40000 THEN 40000
            WHEN PRICE >= 30000 THEN 30000
            WHEN PRICE >= 20000 THEN 20000
            WHEN PRICE >= 10000 THEN 10000
            WHEN PRICE >= 0 THEN 0 END PRICE_GROUP, 
        COUNT(PRODUCT_ID) PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

첫번째 방법입니다. CASE를 이용하여 금액별로 나눠주는 방법으로 풀 수 있습니다. 하지만 금액의 범위가 늘어나면 이 방법은 효율적인 방법이 아님으로 다음 방법을 추천합니다.

SELECT 10000 * (PRICE DIV 10000) AS PRICE_GROUP, COUNT(1) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

DIV함수는 나누었을때 몫을 구하는 함수입니다. 따라서 만원 단위만 필요함으로 나눈뒤 다시 10000을 곱하면 만원 단위만 남습니다. 이 방법으로 문제를 풀었습니다.

728x90