[ORACLE]WINDOW 함수_그룹 내 순위함수(ROW_NUMBER)

이경영·2023년 5월 31일
0

오라클

목록 보기
9/43
  • 윈도우 함수 종류
  1. 그룹 내 순위
  2. 그룹 내 집계
  3. 그룹 내 행 순서 관련 (그룹내 행 순서)
  4. 그룹 내 비율 관련


  • 윈도우 함수 문법
    SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 컬럼] [OREDER BY 절] [WINDOWING 절]) FROM 테이블명

  • WINDOW_FUNCTION : 함수명

  • ARGUMENTS : 인수

  • PARTITION BY : 전체 집합을 기준에 의해 소그룹으로 나눌 수 있다.

  • ORDER BY : 어떤 항목에 대해 순위 지정할지 결정

  • WINDOWING 절 : 행 기준의 범위 지정가능.


  • 오늘 회사에서 알게된것
  • ROW_NUMBER
    RANK, DENSE_RANK가 동일한 건에 대해서 동일한 순위를 부여하지만. ROW_NUMBER는 동일한 값이라도 고유한 순위를 부여한다.
SELECT JOB, ENAME, SAL
	ROW_NUMVER() OVER (ORDER BY SAL DESC) ROW_NUMBER
    FROM EMP;
  • SALARY를 기준으로 내림차순 정렬후 row_number인 1,2,3,4,5...부여함.

동일한 순위를 배제하기 위해 유니크한 순위를 정함.
같은 값에 대해 어떤 결과가 먼저 나올지 순서 정하고싶으면 ORDER BY 를 같이 기재.

  • 예를들어 그룹 지정시에
부서   날짜
-----------
 영업부 20230531
 영업부 없음
 HR부 없음
 개발부 20230531
 개발부 없음
이런식으로 테이블이 주어졌을때
부서가 날짜가 있으면 날짜를 출력, 없으면 없음을 출력하고싶은경우
order by 함수를 쓰고 row_num을 줘서 where = 1 인 쿼리만 구하면 된다! 
profile
꾸준히

0개의 댓글