안녕하세요
SQL 초보자 입니다.
현재 인사연동 시스템에 추가적으로 쿼리를 추가할려고 합니다.
아래 조건에 맞춰서 쿼리를 작성할려고 하는데 도저히 제 혼자 힘으로 불가피 하여 도움받고 자 합니다.
조건: 75 값보다 작거나 같은 조건을 활용하여 부서 코드를 비교하여 부서에서 ROLLCODE가 가장 낮은 사람을 부서장으로 MANAGERID를 매핑하는 작업을 하려고 함(아래 조건 셋 다 만족 필요)
1. TEST_USER_LEGACY 테이블의 ROLLCODE 컬럼값이 75보다 작거나 같은 사람
2. 1번 조건을 만족하는 부서원 중 가장 작은 ROLLCODE 값을 갖고 있는 사람
3. 2번 조건 중 ROLLCODE 값이 동일한 사람이 여러 명인 경우 USERID가 가장 낮은 사람
이와같이 아래 세 조건을 만족하는 쿼리를 짜야하는데 case when MIN(rolecode <= '75') as MANAGERID 이런식으로 짤려고 하는데 옴좀 부탁드리겠습니다.
부탁드립니다.
감사합니다.
Comment 4
-
건우아빠
2018.10.16 20:23
-
SQL공부
2018.10.16 20:47
한줄기의 빛 ㅠㅠ 감사합니다 -
SQL공부
2018.10.17 08:53
안녕하세요
어제 답변 주신점은 정말 감사합니다.
다름이 아니라 현재 저 쿼리에 대해서 질문을 드릴까 합니다.
저기서 말씀하신 쿼리중 부서, 우선순위 한글로 작성되어 있는건 DB에 컬러명을 말씀하시는 건가요??
우선순위가 mangerid를 지칭하는게 맞는 건가요?? 그리고 우선순위=1 어떤 의미인지 궁금합니다.
질문드립니다.
감사합니다.
-
건우아빠
2018.10.17 09:15
부서원 중 가장 작은 ROLLCODE 값을 갖고 있는 사람
ROLLCODE 값이 동일한 사람이 여러 명인 경우 USERID가 가장 낮은 사람
이걸 row_numner() 해서 순위를 부여 한겁니다.
결국 1인 경우가 조건에 해당하는 사람이 되겠죠..
with res
as
( select 부서
, 부서원
, ROLLCODE
, row_number() over( partition by 부서 order by ROLLCODE , USERID ) 우선순위
from TEST_USER_LEGACY
where ROLLCODE <= 75 )
select *
from res
where 우선순위 = 1