가격대 별 상품 개수 구하기 (LEVEL2)
레벨 치고는 어려웠던 문제
PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력
컬럼명은 각각 컬럼명은 PRICE_GROUP, PRODUCTS로 지정
가격대 정보는 각 구간의 최소금액(10,000원 이상 ~ 20,000 미만인 구간인 경우 10,000)으로 표시해주세요.
정렬은 가격 오름차순
정답 코드
SELECT CASE WHEN (0 < PRICE) AND (PRICE < 10000) 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
END AS PRICE_GROUP, count(*) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP ASC
다른 정답 코드
SELECT PRICE_GROUP, count(PRODUCT_ID) AS PRODUCTS
FROM (SELECT PRODUCT_ID, PRICE, truncate(PRICE, -4) AS PRICE_GROUP
FROM PRODUCT) as a
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
SELECT (CASE
WHEN PRICE < 10000 THEN 0
ELSE TRUNCATE(PRICE, -4)
END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
SELECT FLOOR(PRICE/10000)*10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTS
FROM product
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP ASC
MEMO
- SELECT 에서 사용한 별칭을 GROUP BY 에서 사용할 수 있다.
- GROUP BY 이후에 SELECT 이 실행된다. (SELECT 에서 계산하는 건 맞지만 실행되는 건 아니다. 실행과 계산 개념이 분리되나 보다)
- TRUNCATE(숫자, 버릴 수) : 자리수 이하 버림 ex) TRUNCATE(15000, -4) = 10000
- FLOOR(숫자) : 소수점 제거 ex) FLOOR(2.5) = 2
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[MYSQL 23] 조건에 맞는 사원 정보 조회하기 (1) | 2024.09.22 |
---|---|
[MYSQL 22] 동명 동물 수 찾기 (0) | 2024.09.21 |
[MYSQL 20] 조건에 맞는 아이템들의 가격의 총합 구하기 (1) | 2024.09.14 |
[MYSQL 19] 물고기 종류 별 대어 찾기 (0) | 2024.09.13 |
[MYSQL 18] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2024.09.12 |