본문 바로가기
DB

오라클 DB 공부2 (FUNCTION)

by _dreamgirl 2024. 7. 18.
반응형

--오라클 합계 함수 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

[Oracle] 그룹 함수 over, partition by

분석함수란? SELECT 분석함수 OVER([PARTITION BY 칼럼] [ORDER BY 칼럼] [WINDOWING 절]) FROM 테이블; 분석함수는 이미 사용해보셨을 겁니다. COUNT(), AVG(), SUM() 등과 같이 GROUP BY 절과 함께 사용했던 함수들도 있

developer-davii.tistory.com

https://luckyguystory.tistory.com/92

오라클 11 버전이하, 페이징(paging) 방법

mysql 에서는 limit 키워드가 존재하여, 간단히 페이징 처리가 가능함 • SELECT * FROM USER orders LIMIT 10; • SELECT * FROM USER orders LIMIT 20; • SELECT * FROM USER ORDERS LIMIT 10 OFFSET 0; • SELECT * FROM USER ORDERS LIMIT 10

luckyguystory.tistory.com

https://gent.tistory.com/549

[Oracle] 그룹별 가장 최근 데이터 1건 가져오기

오라클에서 그룹별 가장 최근 데이터 또는 마지막 데이터 1건만 조회하기 위해서는 분석함수(ROW_NUMBER, RANK)를 사용하면 쉽게 해결할 수 있다. 또 다른 방법으로 서브 쿼리를 사용하여 MAX 값을 추

gent.tistory.com

https://gent.tistory.com/386#google_vignette

[Oracle] 오라클 GROUPING, GROUPING_ID 함수 사용법 정리

오라클의 GROUPING, GROUPING_ID 함수는 소계와 합계를 집계할 때 사용하는 ROLLUP, CUBE, GROUPING SETS 함수와 함계 사용된다. 소계와 합계로 집계되어 출력된 행을 구분할 때 사용한다. 기본 사용법 GROUPING

gent.tistory.com

 

반응형

'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

댓글