[SQL] 가격대 별 상품 개수 구하기

NoHae·2025년 2월 2일

SQL

목록 보기
36/86

문제 출처

코딩테스트 연습 > GROUP BY > 가격대 별 상품 개수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131530

문제 설명

접근 방법

1번째 방법으로 case를 사용하여 각 범위마다 값을 지정한다. 단, 이는 코드가 지저분하고, 상황에 따라 달라질 수 있다.

# 1 번째 case 사용
SELECT case when price < 1000 then 0
when(10000 <= price) and (price < 20000) then 10000
when(20000 <= price) and (price < 30000) then 20000
when(30000 <= price) and (price < 40000) then 30000
when(40000 <= price) and (price < 50000) then 40000
when(50000 <= price) and (price < 60000) then 50000
when(60000 <= price) and (price < 70000) then 60000
when(70000 <= price) and (price < 80000) then 70000
when(80000 <= price) and (price < 90000) then 80000
else 90000
end as PRICE_GROUP, count(*)
from product
group by PRICE_GROUP
order by price asc

2번째 방법으로 floor 함수를 이용한다. floor(price/10000)*10000을 사용하여 price를 정수로 바꾼 뒤, 다시 10000을 곱해준다.

#2 번째 floor 함수 이용
SELECT floor(price/10000) * 10000 as PRICE_GROUP, count(*) as PRODUCTS
from product
group by PRICE_GROUP
order by PRICE_GROUP asc

알게된 점

FLOOR() 함수는 주어진 숫자를 가장 가까운 "작거나 같은" 정수로 내림하는 함수이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글