코딩테스트

[26.04.03 코테/회고(MySQL/Oracle)]-가격대 별 상품 개수 구하기

지니248 2026. 4. 3. 12:34

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(숫자, [자릿수]) 형식. 숫자뿐만 아니라 날짜 데이터의 시,분,초를 절삭할때도 사용