--오라클 합계 함수 ROLLUP
오라클 ROLLUP은 데이터베이스 질의 언어(SQL)에서 사용되는 기능 중 하나입니다.
ROLLUP은 GROUP BY 절과 함께 사용되며, 그룹화된 결과에 대한 합계나 서브 합계를 생성합니다.
SELECT region, product, SUM(amount) AS total_sales
FROM sales
GROUP BY ROLLUP(region, product);
-- GROUP BY ROLLUP 을 사용할 때 인자가 두개 이상이 될 때
HAVING GROUPING_ID 함수를 사용하여 불필요한 값을 제거할 때 사용할 수 있다.
GROUPING_ID 함수에서 매개변수의 컬럼 순서에 맞게 해당 컬럼이 NULL인 경우 1을 반환하고 한 행을 2진수로 생각하면 된다.
--오라클 함수 REGEXP_SUBSTR
REGEXP_SUBSTR([문자열], [구분자(패턴)], [구분자찾을시작위치], [구분자찾은순서])
정규식 함수를 사용하여 구분자 쉼표(',')를 기준으로 문자열을 자르는 예제이다.
WITH tab AS (
SELECT 'Java,Kotlin,Python,Swift' AS lang FROM dual
)
SELECT a.lang
, REGEXP_SUBSTR(a.lang,'[^,]+', 1, 1) AS str1
, REGEXP_SUBSTR(a.lang,'[^,]+', 1, 2) AS str2
, REGEXP_SUBSTR(a.lang,'[^,]+', 1, 3) AS str3
, REGEXP_SUBSTR(a.lang,'[^,]+', 1, 4) AS str4
FROM tab a
--그룹단위로 나누어 카운트하고 싶을때
COUNT(1) OVER (PARTITION BY NULL) AS TOT_CNT
--전체 행 카운트
COUNT(*) OVER () AS TOT_CNT
-- 오라클 페이징 쿼리문
SELECT A.*
FROM (
SELECT ROWNUM AS RNUM
, COUNT(*) OVER() AS TOT_CNT
, A.*
FROM (
검색할 조회 쿼리문
) A
) A
) WHERE RNUM BETWEEN 1 AND 10
;
--ROW_NUMBER 함수를 이용한 최근 데이터 조회
SELECT B.*
FROM (
SELECT A.*, ROW_NUMBER() OVER(PARTITION BY 그룹 ORDER BY 정렬 DESC) AS RN
FROM A
) B
WHERE RN = 1
* 참고 사이트
https://developer-davii.tistory.com/69
https://luckyguystory.tistory.com/92
https://gent.tistory.com/386#google_vignette
'DB' 카테고리의 다른 글
오라클 데이터 마스킹 (0) | 2024.08.23 |
---|---|
오라클 DB 공부(DATATYPE) (0) | 2024.08.08 |
오라클 오류들 [ ORA-CODE ] (0) | 2024.06.19 |
오라클 DB 공부(VIEW,PROCEDURE,JOB) (0) | 2024.05.17 |
오라클 트리거 (1) | 2024.04.04 |
댓글