2023-11-20 01:11
실무를 하다 보면 배정 업무를 담당하게 되는 일들이 있습니다. 그런데 말이죠. 배정할때 조건들은 업무적으로 뭔가 균등하게 배정해야 한다는 점입니다. 예를 들어 직원들을 네개의 그룹으로 나누는데 연봉의 합은 최대한 비슷하게 균등 배정하려고 했을 때 다음과 같이 사용 할 수 있습니다.
SELECT
xx
, sum(sal) AS sum_sal
, count(*) AS cnt
FROM (
SELECT
empno
, sal
, x
, ROW_NUMBER () over( PARTITION BY x ORDER BY CASE WHEN MOD(x, 2) = 1 THEN sal ELSE sal * -1 end desc) AS xx
FROM (
select
empno
, ename
, sal
, NTILE(4) over (order by sal desc) as X
from emp
) t
) GROUP BY xx
ORDER BY xx
출력 ) sal 수치 자체가 비슷하진 않지만 최대한 비슷한 구성으로 이루어짐.
XX | SUM_SAL | CNT |
---|---|---|
1 | 9,400 | 4 |
2 | 7,480 | 4 |
3 | 7,850 | 4 |
4 | 8,325 | 4 |
이것을 좀 활용하면 수치가 비슷한 그룹을 구성하는데 도움이 될 수 있습니다.