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

yannie·2024년 9월 13일
0

[문제]

PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.

[내가 푼 풀이(정답)]

SELECT
    CASE WHEN PRICE >= 0 AND PRICE < 10000 THEN 0
        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
        WHEN PRICE >= 90000 AND PRICE < 100000 THEN 90000
        END AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
;

[코드리뷰]

  • GROUP BY를 통해 PRICE_GROUP을 기준으로 그룹화를 하였다.
  • CASE WHEN절을 사용하여 각 가격대마다 구간을 설정하였다.

기억해!

내가 풀이한 코드는 너무 길어서 다른 코드 방법은 없을지 chatGPT에 물어봤다.

  • FLOOR함수를 사용하여 더 짧고 효율적인 코드를 작성할 수 있다.
  • FLOOR함수는 소수점을 버리는 역할을 한다.
SELECT 
    FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;
  • FLOOR(PRICE/10000) : 가격을 10,000으로 나눈 후 소수점을 버린다.
    -> 10000원 단위로 그룹화 가능하다.

0개의 댓글