본문 바로가기
Database/PROGRAMMERS[DB]

[PROGRAMMERS] Lv.2 가격대 별 상품 개수 구하기 => GROUP BY

by 임성장 2023. 11. 23.
728x90

문제

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

이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 

가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 

결과는 가격대를 기준으로 오름차순 정렬해주세요.

풀이

SELECT CASE
    WHEN PRICE BETWEEN 0 AND 9999
    THEN '0'
    WHEN PRICE BETWEEN 10000 AND 19999
    THEN '10000'
    WHEN PRICE BETWEEN 20000 AND 29999
    THEN '20000'
    WHEN PRICE BETWEEN 30000 AND 39999
    THEN '30000'
    WHEN PRICE BETWEEN 40000 AND 49999
    THEN '40000'
    WHEN PRICE BETWEEN 50000 AND 59999
    THEN '50000'
    WHEN PRICE BETWEEN 60000 AND 69999
    THEN '60000'
    WHEN PRICE BETWEEN 70000 AND 79999
    THEN '70000'
    WHEN PRICE BETWEEN 80000 AND 89999
    THEN '80000'
    END
    AS PRICE_GROUP
    , COUNT(*)
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

 

  • case문
  • SQL에서 조건부 로직을 수행하기 위한 구문
  • 이를 사용하여 특정 조건에 따라 다른 결과를 반환하거나 특정 열의 값을 조건에 따라 변환할 수 있음.
  • 기본 형태
CASE 표현식
    WHEN 값1 THEN 결과1
    WHEN 값2 THEN 결과2
    ...
    ELSE 기본결과
END

 

  • 간단한 예제
-- salary가 특정 값 이상일 때 다른 결과를 반환
SELECT
    first_name,
    last_name,
    CASE
        WHEN salary > 50000 THEN 'High Salary'
        WHEN salary > 30000 THEN 'Medium Salary'
        ELSE 'Low Salary'
    END AS salary_category
FROM employees;

 

  • 간단한 예제
-- product_category의 값에 따라 다른 결과를 반환
SELECT
    product_name,
    CASE product_category
        WHEN 'Electronics' THEN 'High-Tech'
        WHEN 'Clothing' THEN 'Apparel'
        ELSE 'Other'
    END AS refined_category
FROM products;
728x90