프로그래머스 SQL 고득점 Kit - 가격대별 상품 개수 구하기

Jinyoung Cheon·2025년 8월 16일
0

코딩테스트

목록 보기
21/25

프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

GROUP BY

problem

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

code

SELECT
    (PRICE DIV 10000) * 10000 AS PRICE_GROUP,  -- 구간의 하한값(0, 10000, 20000, …)
    COUNT(*) AS PRODUCTS                       -- 각 구간의 상품 개수
FROM PRODUCT
GROUP BY (PRICE DIV 10000)                     -- 몫으로 묶기
ORDER BY PRICE_GROUP;                          -- 가격대 오름차순

note

문제의 출력값 예시로 다음과 같이 나와있다.
"처음에는 CASE~WHEN을 통해 PRICE_GROUP을 나눠야할까?" 라는 생각을 갖고 있었다.
그래서 PRICE의 값을 출력해보니 70000, 80000원 대의 금액도 있었다.
범주가 다양하지 않고 적다면 CASE~WHEN을 활용했겠지만, 범주가 늘어나면 늘어날 수록 효율적이지 않을 것이라는 생각을 하고 다른 방법을 통해 접근하였다.

PRICE_GROUPPRODUCTS
01
100003
200001
300001

금액을 10000으로 나눈 몫을 PRICE_GROUP으로 지정하고, 이를 GROUP BY 를 하면서 쿼리를 작성하였다.

profile
데이터를 향해, 한 걸음씩 천천히.

0개의 댓글