44번 - 가격대 별 상품 개수 구하기
PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요. 이때 컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정해주시고 가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요. 결과는 가격대를 기준으로 오름차순 정렬해주세요.
만원 단위의 가격대 별로 상품을 나누면
- 가격대가 0원 ~ 1만원 미만인 상품은 PRODUCT_ID 가 2인 상품 1개,
- 가격대가 1만원 이상 ~ 2만원 미만인 상품들은 PRODUCT_ID 가 1, 4, 6인 상품 3개,
- 가격대가 2만원 이상 ~ 3만원 미만인 상품은 PRODUCT_ID 가 3인 상품 1개,
- 가격대가 3만원 이상 ~ 4만원 미만인 상품은 PRODUCT_ID 가 5인 상품 1개,
에 각각 해당하므로 다음과 같이 결과가 나와야 합니다.
price_group | products |
0 | 1 |
10000 | 3 |
20000 | 1 |
30000 | 1 |
select price_group,
count(1) products
from
(
select *,
case when price < 10000 then 0
when price < 20000 then 10000
when price < 30000 then 20000
when price < 40000 then 30000
when price < 50000 then 40000
when price < 60000 then 50000
when price < 70000 then 60000
when price < 80000 then 70000
else 80000 end price_group
from product
) a
group by 1
order by 1
SUBQUERY문을 이용한 문제 해결
<subquery>
조회: 전체 컬럼, case when 문을 통해 가격대 구간 지정하고 문제에 나와있듯이 컬럼명 지정
서브 쿼리 지정 후,
- 조회 : 서브쿼리에 작성했던 price group, 가격대 별 상품 개수
- 가격대 별로 그룹 지정해야 하기 때문에 group by 1
- 순서: 가격대를 기준으로 오름차순이기 때문에 order by 1
'CODEKATA' 카테고리의 다른 글
20240704 SQL CODEKATA 46번 (0) | 2024.07.04 |
---|---|
SQL CODEKATA 45번 (0) | 2024.07.03 |
20240701 SQL 코드카타 41번, 42번, 43번 (0) | 2024.07.01 |
20240628 SQL 코드카타 40번 (1) | 2024.06.30 |
20240617 코드카타 38번 39번 (0) | 2024.06.28 |