728x90

    == 분석 함수 Analyticla Functions 정리 ==



        일반 그룹 함수가 하나의 집단에 하나의 결과만 return 되는 것에 비해

        여러 가지 기준을 적용해 여러 결과를 return 할 수 있다.



    1.  first_value() over() 그룹의 첫번째 값을 구한다.


      예제)


    select full_name 이름, money 연봉,

    first_value( money ) over( order by money desc ) 최고연봉

    from company;


    select full_name 이름, money 연봉,

    first_value( money ) over( order by money desc rows 2 preceding ) 최고연봉

    from company;  2줄 위의 값까지 중 첫번째 값


    select full_name 이름, money 연봉,

    first_value( money ) over( order by money desc range 2000 preceding ) 

    최고연봉

    from company;  연봉 + 2000 까지 중 첫번째 값


     


    2.  last_value() over() 현재의 줄에만 적용한다. 범위를 지정을 사용해야 한다.


    예제 )  

     select last_name 이름, money 연봉, 

     last_value( money ) over( order by money desc rows 3 preceding ) 

     최저연봉 

     from company;  3줄 위의 값까지 중 마지막 값 - 결국 자기 자신



     select last_name 이름, money 연봉, 

     last_value( money ) over( order by money desc rows between 2 preceding       and 2 following ) 최저연봉 

     from company;  위 아래 각각 2줄 까지 중 마지막 값



    3. count() over()  정렬에 따라 그룹의 누적 개수를 구한다.


    예제) 

    select department_id, last_name, money, count(*) over( order by money desc ) 

     from company where department_id=50;

       


    4. sum() over() 정렬에 따라 그룹의 누적 합계를 구한다. 


    예제)


    select department_id, last_name, money, sum(money) over( order by department_id asc ) from company;



    select department_id, last_name, money, sum(money) over( partition by department_id order by department_id asc ) from company;

        


    ​5. row_number() over() 그룹에서 Row번호를 구한다.


    예제)


    select department_id, last_name, money, row_number() over( partition by department_id order by money desc ) from company;


    ​6. rank() over(),  dense_rank() over()그룹의 순위를 구한다.


    동일 순위일 경우 rank over는 1, 1, 3 으로

    row_number over 는 1, 2, 3 으로

    dense_rank over는 1, 1, 2 로 표현

    예제)


    select full_name, department_id 부서, money 연봉,

    rank() over( partition by department_id order by money desc ) 부서연봉순위 

    from company;

        

     


    Posted by 천상나타