반응형
가격대 별 상품 개수 구하기 예제를 통해서, 구간별로 통계를 구하는 쿼리를 작성해봅니다. 아래 예제에서는 집계함수 COUNT를 사용합니다.
[ Contents ]
1. 문제 (링크 참조)
예제 문제는 프로그래머스 '가격대 별 상품 개수 구하기'를 참조합니다.
PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 작성
2. 문제 풀이
GROUP BY 구문은 지정된 칼럼들의 값이 같은 것끼리 묶어서 집계할 수 있도록 해줍니다.
그룹별로 묶어서 통계를 내는 데에 사용하며, 해당 구문의 자세한 설명은 아래에서 찾아보실 수 있습니다.
2022.03.06 - [Data Engineering/SQL] - [SQL] 특정 칼럼으로 묶기 Group by - 오라클(Oracle)
위 문제에서는 만원 단위로 구해달라고 했으니, 1000원 이하를 절삭한 후 GROUP BY절로 묶어줘야 합니다.
예를 들어 13000원과 19000원을 천의 자리에서 절삭하면 둘 다 10000원으로, 같이 묶이게 됩니다.
TRUNC(숫자, 절삭할 자릿수)
SELECT
TRUNC(123.45, 2)
, TRUNC(123.45, 1)
, TRUNC(123.45)
, TRUNC(123.45, -1)
, TRUNC(123.45, -2)
FROM DUAL
특정 자릿수 미만을 절삭하는 오라클 함수는 TRUNC입니다.
TRUNC(123.45, 1)는 123.45에서 소수점 아래 첫째짜리 밑을 절삭한다는 뜻으로, 123.1이 됩니다.
자릿수가 음수인 경우에는 소수점 윗 자릿수를 뜻하며, -1은 1의 자리 절삭이고 -2는 10의 자리 절삭입니다.
반응형
3. 코드
-- 코드를 입력하세요
SELECT
TRUNC(PRICE, -4) AS PRICE_GROUP
, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY TRUNC(PRICE, -4)
ORDER BY PRICE_GROUP
위 문제에서는 10000원 단위로 나타내야 하므로, 천의 자리에서 절삭해주면 됩니다.
반응형
'Data Engineering > SQL' 카테고리의 다른 글
[Oracle] 손쉽게 데이터값을 수정하는 명령어 EDIT (Toad for Oracle) (0) | 2023.12.05 |
---|---|
[ORACLE] 계층형 쿼리를 활용한 날짜 생성 (CONNECT BY LEVEL 이용) (1) | 2023.12.05 |
[Oracle] PL/SQL 프로시저 FOR LOOP (CURSOR, SELECT문 이용) (0) | 2023.10.13 |
[Oracle] COALESCE: Null이 아닌 가장 왼쪽 값을 찾는 함수 (0) | 2023.04.27 |
[ORACLE] 기존 튜플을 변형해서 테이블에 삽입하는 방법 (여러 건의 튜플 삽입) (0) | 2023.04.25 |
댓글