DATABASE

[ORACLE] ROW_NUMBER() OVER( )

오래오래 늘 함께 2018. 11. 5. 16:22
  • ROW_NUMBER() OVER( PATITION BY 중복조회컬럼 ORDER BY 정렬컬럼명)

: 특정 컬럼 기준으로 순위정하기(행번호 부여하기)



ex) 교수별로 가장 오래된 날짜에 해당되는 데이터 출력



1. 교수별로 가장 오래된 날짜순으로 정렬하기


SELECT

row_number( ) over ( partition by empno order by from_dt ) rowno ,

A.*

FROM PER130TL A




2. 교수별로 가장 오래된 날짜(1건)에 해당하는 데이터 출력


SELECT *

FROM ( SELECT

row_number( ) over ( partition by empno order by from_dt ) rowno,

A.*


FROM PER130TL A )

WHERE rowno = 1



           

       


ex) 사번(RSDT_REGNO)별로 환급될 돈(DCSN_TAXAMT)이 가장 높은순에 해당하는 데이터 출력하기


1. 사번별로 환급될 돈이 높은순으로 정렬하기


SELECT

row_number( ) over ( partition by RSDT_REGNO order by DCSN_TAXAMT) maxtax ,

A.*

FROM A




2. 사번별로 환급될 돈이 가장 높은순에 해당하는 데이터 출력


SELECT 

row_number( ) over (partition by RSDT_REGNO order by DCSN_TAXAMT) maxtax,

A.*

FROM  A

WHERE maxtax = 1