항상 많은 도움을 받고 있습니다.
저희 회사에서 조직별, 직원별 점수에 따라 순위를 적용하려고 하는데요.
아래와 같은 쿼리를 실행하였습니다.
with t as
(
select 'A001' as dept, '0001' as emp, 1.235 as score from dual union all
select 'A001' as dept, '0001' as emp, 1.235 as score from dual union all
select 'A001' as dept, '0001' as emp, 1.235 as score from dual union all
select 'A001' as dept, '0002' as emp, 2.215 as score from dual union all
select 'A001' as dept, '0002' as emp, 2.215 as score from dual union all
select 'A001' as dept, '0002' as emp, 2.215 as score from dual union all
select 'A001' as dept, '0003' as emp, 1.751 as score from dual union all
select 'A001' as dept, '0003' as emp, 1.751 as score from dual union all
select 'A001' as dept, '0003' as emp, 1.751 as score from dual union all
select 'A001' as dept, '0004' as emp, 2.851 as score from dual union all
select 'A001' as dept, '0004' as emp, 2.851 as score from dual union all
select 'A001' as dept, '0004' as emp, 2.851 as score from dual union all
select 'A001' as dept, '0005' as emp, 1.751 as score from dual union all
select 'A001' as dept, '0005' as emp, 1.751 as score from dual union all
select 'A001' as dept, '0005' as emp, 1.751 as score from dual
)
select dept, emp, score, rank() over (partition by dept order by score) as rank
from t
order by emp
최종적으로 아래와 같은 결과값을 원했는데, 순위가 생각한대로 적용이 되지 않네요
조직별로 score 를 기준하여 사원별 순위를 선정합니다.
score가 같은 경우 순위는 공동순위로 표시가 되고, 다음 score의 경우 차순위로 표시가 되길 원합니다.
--------------------------------------------------
dept emp score rank
A001 0001 1.235 1
A001 0001 1.235 1
A001 0001 1.235 1
A001 0002 2.215 4
A001 0002 2.215 4
A001 0002 2.215 4
A001 0003 1.751 2
A001 0003 1.751 2
A001 0003 1.751 2
A001 0004 2.851 5
A001 0004 2.851 5
A001 0004 2.851 5
A001 0005 1.751 2
A001 0005 1.751 2
A001 0005 1.751 2
--------------------------------------------------
실제로 쿼리를 돌리면,
dept emp score rank
A001 0001 1.235 1
A001 0001 1.235 1
A001 0001 1.235 1
A001 0002 2.215 10
A001 0002 2.215 10
A001 0002 2.215 10
A001 0003 1.751 4
A001 0003 1.751 4
A001 0003 1.751 4
A001 0004 2.851 13
A001 0004 2.851 13
A001 0004 2.851 13
A001 0005 1.751 4
A001 0005 1.751 4
A001 0005 1.751 4
이런 형태로 조회가 됩니다.
하나의 조직이 3개의 row 를 가지고 있어서 그런 듯 한데 이 부분을 해결할 방법이 있을까요?
|