본문 바로가기
카테고리 없음

Oracle 분석 함수 정리

by 어느 개발자의 블로그 2022. 12. 29.
반응형

Oracle에는 분석과 보고용으로 사용할 수 있는 내장 함수가 많이 제공됩니다. 일반적으로 사용되는 Oracle 분석 함수를 아래와 같이 정리해보겠습니다.

 

1. RANK()

  • 기능: 결과 집합의 각 행에 고유한 순위를 할당합니다.
  • 사용법: SELECT [열1], [열2], RANK() OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT employee_id, salary, RANK() OVER (ORDER BY salary DESC) as "순위"
FROM employees;

 

2. DENSE_RANK()

  • 기능: RANK() 함수와 유사하지만, 같은 순위인 행들은 순위가 아닌 다음 순위가 부여됩니다.
  • 사용법: SELECT [열1], [열2], DENSE_RANK() OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT employee_id, salary, DENSE_RANK() OVER (ORDER BY salary DESC) as "순위"
FROM employees;

 

3. NTILE()

  • 기능: 결과 집합을 지정한 개수의 그룹으로 나눕니다.
  • 사용법: SELECT [열1], [열2], NTILE([그룹 개수]) OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT employee_id, salary, NTILE(4) OVER (ORDER BY salary DESC) as "그룹"
FROM employees;

 

4. LAG()

  • 기능: 결과 집합의 각 행의 이전 행의 값을 반환합니다.
  • 사용법: SELECT [열1], [열2], LAG([참조 열], [참조 간격], [기본값]) OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT employee_id, salary, LAG(salary, 1, 0) OVER (ORDER BY salary DESC) as "이전 연봉"
FROM employees;

 

5. LEAD()

  • 기능: 결과 집합의 각 행의 다음 행의 값을 반환합니다.
  • 사용법: SELECT [열1], [열2], LEAD([참조 열], [참조 간격], [기본값]) OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT employee_id, salary, LEAD(salary, 1, 0) OVER (ORDER BY salary DESC) as "다음 연봉"
FROM employees;

 

6. FIRST_VALUE()

  • 기능: 결과 집합의 첫 번째 행의 값을 반환합니다.
  • 사용법: SELECT FIRST_VALUE([열]) OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT FIRST_VALUE(salary) OVER (ORDER BY hire_date) as "첫 번째 연봉"
FROM employees;

 

7. LAST_VALUE()

  • 기능: 결과 집합의 마지막 행의 값을 반환합니다.
  • 사용법: SELECT LAST_VALUE([열]) OVER (ORDER BY [정렬 기준 열]) FROM [테이블];
  • 예제:
SELECT LAST_VALUE(salary) OVER (ORDER BY hire_date) as "마지막 연봉"
FROM employees;

 

8. ROW_NUMBER()

  • 기능: 결과 집합의 각 행에 고유한 번호를 할당합니다.
  • 사용법: SELECT ROW_NUMBER() OVER (ORDER BY [정렬 기준 열]) as "행 번호", [열1], [열2] FROM [테이블];
  • 예제:
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) as "행 번호", employee_id, salary
FROM employees;

 

9. AVG()

  • 기능: 결과 집합의 지정 열의 평균값을 반환합니다.
  • 사용법: SELECT AVG([열]) FROM [테이블];
  • 예제:
SELECT AVG(salary) as "평균 연봉"
FROM employees;

 

10. MIN()

  • 기능: 결과 집합의 지정 열의 최솟값을 반환합니다.
  • 사용법: SELECT MIN([열]) FROM [테이블];
  • 예제:
SELECT MIN(salary) as "최소 연봉"
FROM employees;

 

11. MAX()

  • 기능: 결과 집합의 지정 열의 최댓값을 반환합니다.
  • 사용법: SELECT MAX([열]) FROM [테이블];
  • 예제:
 
SELECT MAX(salary) as "최대 연봉"
FROM employees;

 

12. SUM()

  • 기능: 결과 집합의 지정 열의 합을 반환합니다.
  • 사용법: SELECT SUM([열]) FROM [테이블];
  • 예제:
SELECT SUM(salary) as "총 연봉"
FROM employees;

 

13. COUNT()

  • 기능: 결과 집합에 포함된 행의 수를 반환합니다.
  • 사용법: SELECT COUNT(*) FROM [테이블];
  • 예제:
SELECT COUNT(*) as "직원 수"
FROM employees

 

14. STDDEV()

  • 기능: 결과 집합의 지정 열의 표준 편차를 반환합니다.
  • 사용법: SELECT STDDEV([열]) FROM [테이블];
  • 예제:
SELECT STDDEV(salary) as "연봉 표준 편차"
FROM employees;

 

15. VARIANCE()

  • 기능: 결과 집합의 지정 열의 분산을 반환합니다.
  • 사용법: SELECT VARIANCE([열]) FROM [테이블];
  • 예제:
SELECT VARIANCE(salary) as "연봉 분산"
FROM employees;

 

16. CORR()

  • 기능: 결과 집합에서 두 열의 상관계수를 반환합니다.
  • 사용법: SELECT CORR([열1], [열2]) FROM [테이블];
  • 예제:
SELECT CORR(salary, commission_pct) as "연봉과 커미션 상관계수"
FROM employees;

 

 

 

 

반응형