SELECT TRUNCATE(PRICE,-4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
- TRUNCATE
TRUNCATE(숫자, 버릴_자릿수) 함수는 숫자의 소수점 자릿수를 버리는 데 사용됩니다. 양수 자릿수를 제공하면, 해당 자릿수까지의 소수점 이하 숫자를 유지하고 나머지를 버립니다. 반면에 음수 자릿수를 제공하면, 해당 자릿수만큼 소수점 왼쪽의 숫자를 버리게 됩니다.
-- TRUNCATE(숫자, 버릴_자릿수)
SELECT TRUNCATE(123.456789, 2); -- 123.45
SELECT TRUNCATE(987.654321, 1); -- 987.6
SELECT TRUNCATE(1234.56789, -3); -- 1000
SELECT TRUNCATE(9876.54321, -2); -- 9800
SQL 실제 실행 순서는 FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY 이다.
그럼 GROUP BY가 실행되는 시점에는 PRICE_GROUP이 존재하지 않을텐데 어떻게 정상 작동하는 걸까?