보고서 sql 문
직원 이름은 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 이다.
부서 이름은 T-A, T-B,T-C 이다.
부서 팀은 가, 나, 다로 나뉜다.
직책 분류는 LV1, LV2, L3, L4, L5로 나뉜다.
T-A 부서의 직원은 a,b,c,d,e,f,g 이다.
T-A 부서의 YK팀은 a WK팀은 b,c,d SK팀은 e,f,g이다.
T-B 부서의 직원은 h,i,j,k,l,m,n,o,p,q,r 이다.
T-B 부서의 YK팀은은 h,i,j WK팀은 k,l,m,n SK팀은 o,p,q,r이다.
T-C 부서의 직원은 s,t,u,v,w,x,y,z 이다.
T-C 부서의 YK팀은 s,t WK팀은 u,v,w SK팀은x,y,z이다.
LV1은 a,b,c,d,e,f를 포함한다.
LV2은 g,h,i,j,k,l를 포함한다.
LV3은 m,n,o,p,q를 포함한다.
LV4은 r,s,t,u,v를 포함한다.
LV5은 w,x,y,z를 포함한다.
ORACLE SQL로 부서를 기준으로 팀을 분류하여 직책 행으로 표시해서 count하는 보고서 쿼리문을 작성한다.
쿼리문은 아래를 참조해서 작성한다
WITH employee_data AS (
SELECT
employee_name,
department,
CASE
WHEN employee_name IN ('a', 'h', 's') THEN 'YK'
WHEN employee_name IN ('b', 'c', 'd', 'k', 'l', 'm', 'n', 'u', 'v', 'w') THEN 'WK'
WHEN employee_name IN ('e', 'f', 'g', 'o', 'p', 'q', 'r', 'x', 'y', 'z') THEN 'SK'
ELSE '기타'
END AS team,
CASE
WHEN employee_name IN ('a', 'b', 'c', 'd', 'e', 'f') THEN 'LV1'
WHEN employee_name IN ('g', 'h', 'i', 'j', 'k', 'l') THEN 'LV2'
WHEN employee_name IN ('m', 'n', 'o', 'p', 'q') THEN 'LV3'
WHEN employee_name IN ('r', 's', 't', 'u', 'v') THEN 'LV4'
WHEN employee_name IN ('w', 'x', 'y', 'z') THEN 'LV5'
END AS level
FROM EMPLOYEES
)
SELECT
department,
team,
SUM(CASE WHEN level = 'LV1' THEN 1 ELSE 0 END) AS LV1_count,
SUM(CASE WHEN level = 'LV2' THEN 1 ELSE 0 END) AS LV2_count,
SUM(CASE WHEN level = 'LV3' THEN 1 ELSE 0 END) AS LV3_count,
SUM(CASE WHEN level = 'LV4' THEN 1 ELSE 0 END) AS LV4_count,
SUM(CASE WHEN level = 'LV5' THEN 1 ELSE 0 END) AS LV5_count
FROM employee_data
GROUP BY department, team
ORDER BY department, team;