Lv2. 가격대 별 상품 개수 구하기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/131530?language=mysql
내가 작성한 코드
-- 풀이1 (TRUNCATE)
SELECT TRUNCATE(PRICE / 10000,0) * 10000 AS PRICE_GROUP
,COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY TRUNCATE(PRICE / 10000,0) * 10000
ORDER BY PRICE_GROUP ASC;
-- 풀이2 (FLOOR)
SELECT FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP
,COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY FLOOR(PRICE / 10000) * 10000
ORDER BY PRICE_GROUP ASC;
Oracle
SELECT TRUNC(PRICE / 10000) * 10000 AS PRICE_GROUP
,COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY TRUNC(PRICE / 10000) * 10000
ORDER BY PRICE_GROUP ASC;
문제 회고
1. TRUNCATE 자릿수
- TRUNCATE(PRICE / 10000) * 10000 으로 실행하였을 때 에러가 계속 발생하여 다른 분이 푸신 코드를 보고 해결하였다
- TRUNCATE(숫자, 자릿수)의 문법에서 TRUNCATE는 함수를 어디까지 버릴 것인지 숫자로 알려줘야 하기 때문이다
- Oracle에서는 두 번째 인자를 쓰지 않으면 자동으로 0 처리가 되고 생략이 가능하지만,
- MySQL에서는 두 번쨰 인자를 쓰지 않으면 에러가 발생하고 반드시 작성해주어야 한다. 생략이 불가능하다
2. TRUNCATE / TRUNC
- MySQL: TRUNCATE(숫자, 자릿수) 형식. 숫자의 소수점 절삭에만 사용
- Oracle : TRUNC(숫자, [자릿수]) 형식. 숫자뿐만 아니라 날짜 데이터의 시,분,초를 절삭할때도 사용
'코딩테스트' 카테고리의 다른 글
| [26.04.07 코테/회고(MySQL)]-월별 잡은 물고기 수 구하기 (0) | 2026.04.07 |
|---|---|
| [26.04.06 코테/회고(MySQL)]-물고기 종류 별 잡은 수 구하기 (0) | 2026.04.06 |
| [26.04.02 코테/회고(MySQL/Oracle)]-조건에 부합하는 중고거래 상태 조회하기 (0) | 2026.04.02 |
| [26.04.01 코테/회고(MySQL)]-조건에 맞는 사원 정보 조회하기 (0) | 2026.04.01 |
| [26.03.31 코테/회고(MySQL)]-언어별 개발자 분류하기 (0) | 2026.03.31 |