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
'Database > PROGRAMMERS[DB]' 카테고리의 다른 글
[PROGRAMMERS] Lv.3 조건에 맞는 사용자 정보 조회하기=> String, Date (0) | 2023.11.24 |
---|---|
[PROGRAMMERS] Lv.3 오랜 기간 보호한 동물(2) => String, Date (1) | 2023.11.24 |
[PROGRAMMERS] Lv.3 오랜 기간 보호한 동물(1) => JOIN (1) | 2023.11.24 |
[PROGRAMMERS] Lv.2 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 => GROUP BY (1) | 2023.11.23 |
[PROGRAMMERS] Lv.2 입양 시각 구하기(1) => GROUP BY (0) | 2023.11.22 |