가격대 별 상품 개수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131530
- 문제 풀이
TRUNC()
를 사용하여PRICE
를 10000으로 나누고 소수점 이하를 제거하여PRICE_GROUP
으로 만든 쿼리1 2 3 4
SELECT TRUNC(PRICE, -4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS FROM PRODUCT GROUP BY TRUNC(PRICE, -4) ORDER BY PRICE_GROUP ASC;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
SELECT CASE WHEN PRICE = 1 THEN '10000' WHEN PRICE = 2 THEN '20000' WHEN PRICE = 3 THEN '30000' WHEN PRICE = 4 THEN '40000' WHEN PRICE = 5 THEN '50000' WHEN PRICE = 6 THEN '60000' WHEN PRICE = 7 THEN '70000' WHEN PRICE = 8 THEN '80000' ELSE '90000' END AS "PRICE_GROUP" , COUNT(*) AS "PRODUCTS" FROM (SELECT TRUNC(PRICE / 10000) AS "PRICE" FROM PRODUCT) GROUP BY PRICE ORDER BY "PRICE_GROUP";
SUBSTR()
를 사용하여PRICE
컬럼에서 첫 번째 문자를 추출하고, 그 값을 10000으로 곱하여PRICE_GROUP
으로 만든 쿼리1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT PRICE_GROUP, COUNT(PRICE_GROUP) FROM ( SELECT SUBSTR(PRICE, 1, 1) * 10000 AS PRICE_GROUP FROM PRODUCT WHERE PRICE LIKE '0%' OR PRICE LIKE '1%' OR PRICE LIKE '2%' OR PRICE LIKE '3%' OR PRICE LIKE '4%' OR PRICE LIKE '5%' OR PRICE LIKE '6%' OR PRICE LIKE '7%' OR PRICE LIKE '8%' OR PRICE LIKE '9%' ) Subquery GROUP BY PRICE_GROUP ORDER BY PRICE_GROUP;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT SUBSTR(PRICE, 1, 1) * 10000 AS PRICE_GROUP, COUNT(SUBSTR(PRICE, 1, 1) * 10000) FROM PRODUCT WHERE PRICE LIKE '0%' OR PRICE LIKE '1%' OR PRICE LIKE '2%' OR PRICE LIKE '3%' OR PRICE LIKE '4%' OR PRICE LIKE '5%' OR PRICE LIKE '6%' OR PRICE LIKE '7%' OR PRICE LIKE '8%' OR PRICE LIKE '9%' GROUP BY SUBSTR(PRICE, 1, 1) * 10000 ORDER BY PRICE_GROUP;
TRUNC
(Truncate) 함수는 대부분의 데이터베이스 관리 시스템(DBMS)에서 사용되는 SQL 함수 중 하나로, 숫자를 특정 자릿수로 잘라내거나 버리는 역할을 한다.TRUNC
함수는 주로 숫자를 다양한 방식으로 다루거나 표현할 때 사용된다.TRUNC
함수는 가격 그룹화, 날짜 처리, 금융 계산 등 다양한 데이터베이스 작업에서 유용하게 활용될 수 있다.
- 구문:
TRUNC(number, decimal_places)
number
: 잘라내거나 버릴 숫자를 나타내는 표현식이나 열이다.decimal_places
(선택 사항): 잘라내려는 소수점 이하 자릿수를 지정한다. 이 값을 생략하면 기본적으로 0으로 간주되어 정수로 버려진다.
- 동작:
TRUNC
함수는 주어진 숫자를 소수점 이하의 자릿수를 기반으로 잘라낸다. 소수점 이하 자릿수가 양수인 경우, 해당 자릿수만큼 소수점 이하 숫자를 유지하고 나머지 자릿수를 버린다.- 소수점 이하 자릿수가 음수인 경우, 숫자를 왼쪽에서부터 해당 자릿수만큼 버린다. 예를 들어,
2
로 설정하면 백의 자리까지 버릴 수 있다. - 즉,
decimal_places
가 양수인 경우는 소수점 아래 자릿수를 절사하고, 음수인 경우는 소수점 왼쪽 자릿수를 절사한다.
- 예제:
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.