반응형
우선 순위에 따라 status_id인 각 직원에 대해 단일 행 선택
직원별로 레코드를 하나씩만 추출하면 됩니다.employee_id
에서.employee_leaves
테이블에 있는 경우에만status_id
는 다음 숫자 중 하나와 같습니다.7, 4, 3
(우선 순위로 작성).로 행할 때status_id=7
찾을 수 없습니다. 다음 행을 찾아야 합니다.status_id=4
찾을 수 없는 경우 다음 행을 찾아야 합니다.status_id=3
.
예: ID가 =4인 행을 반환해야 합니다.
이드 | employee_id | status_id |
---|---|---|
1 | 7 | 1 |
2 | 7 | 2 |
3 | 7 | 4 |
4 | 7 | 7 |
9 | 7 | 3 |
27 | 7 | 7 |
먼저 각 행을 필터링합니다.employee_id
를 위해status_id
당신이 원하는 것.
그런 다음 행의 순위를 지정합니다.ROW_NUMBER()
원하는 우선순위를 적용하여 창 기능을 수행할 수 있습니다.
마지막으로 각 순위에서 첫 번째 행을 선택합니다.
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY employee_id
ORDER BY status_id = 7 DESC,
status_id = 4 DESC,
status_id = 3 DESC, -- this is the last option and it is actually not needed
id
) AS rn
FROM employee_leaves
WHERE status_id IN (7, 4, 3)
)
SELECT id, employee_id, status_id
FROM cte
WHERE rn = 1;
그ORDER BY
안절ROW_NUMBER()
함수를 사용하여 단순화할 수 있습니다.
ORDER BY FIELD(status_id, 7, 4, 3),
id
또는 다음 함수:
ORDER BY FIND_IN_SET(status_id, '7,4,3'),
id
데모를 참조하십시오.
언급URL : https://stackoverflow.com/questions/75868099/selecting-single-row-for-each-employee-with-status-id-by-priroity
반응형
'programing' 카테고리의 다른 글
각진 2 - 타사 립 추가 (0) | 2023.06.10 |
---|---|
여러 개의 제출 버튼 장고 양식을 작성하려면 어떻게 해야 합니까? (0) | 2023.06.10 |
VBA를 사용하여 Excel 셀에 공식 작성 (0) | 2023.06.10 |
install.packages()를 실행하기 전에 설치된 패키지를 확인합니다. (0) | 2023.06.05 |
Firebase 토큰 오류 TOO_MANY_REGISTRATIONS (0) | 2023.06.05 |