by 쭈니 [SQL Query] [2023.03.09 10:37:43]
순위함수로 첫번째의 값과, 마지막의 값을 가져오고 싶은데
어떤 방법이 있나요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | WITH MEMBER AS ( SELECT 'DB' 부서, '김디비' 이름 , 160 키 , 1 순서 from DUAL UNION ALL SELECT 'DB' 부서, '박디비' 이름 , 180 키 , 2 순서 from DUAL UNION ALL SELECT 'DB' 부서, '서디비' 이름 , 170 키 ,3 순서 from DUAL UNION ALL SELECT 'DB' 부서, '박디비' 이름 , 165 키 ,4 순서 from DUAL UNION ALL SELECT 'UI' 부서, '김디비' 이름 , 150 키 ,1 순서 from DUAL UNION ALL SELECT 'UI' 부서, '박디비' 이름 , 190 키 ,2 순서 from DUAL UNION ALL SELECT 'UI' 부서, '서디비' 이름 , 180 키 ,3 순서 from DUAL ) SELECT 부서, 이름, 연봉, ROW_NUMBER() OVER(PARTITION BY 부서 ORDER BY 연봉) RN FROM MEMBER |
위를 데이터를 예시로 들었을 때
부서 순서1 순서마지막
DB 160 165
UI 150 180
이렇게 표시하고싶습니다.. 순서의 총 인원수는 다릅니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | WITH MEMBER AS ( SELECT 'DB' 부서, '김디비' 이름 , 5000 연봉 from DUAL UNION ALL SELECT 'DB' 부서, '박디비' 이름 , 3500 연봉 from DUAL UNION ALL SELECT 'DB' 부서, '서디비' 이름 , 3000 연봉 from DUAL UNION ALL SELECT 'DB' 부서, '박디비' 이름 , 3500 연봉 from DUAL UNION ALL SELECT 'UI' 부서, '김디비' 이름 , 4500 연봉 from DUAL UNION ALL SELECT 'UI' 부서, '박디비' 이름 , 3500 연봉 from DUAL UNION ALL SELECT 'UI' 부서, '서디비' 이름 , 3000 연봉 from DUAL ) SELECT 부서, MIN (연봉), MAX (연봉) FROM MEMBER GROUP BY 부서 ORDER BY 부서 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | WITH member AS ( SELECT 'DB' 부서, '김디비' 이름, 160 키, 1 순서 FROM dual UNION ALL SELECT 'DB' , '박디비' , 180, 2 FROM dual UNION ALL SELECT 'DB' , '서디비' , 170, 3 FROM dual UNION ALL SELECT 'DB' , '박디비' , 165, 4 FROM dual UNION ALL SELECT 'UI' , '김디비' , 150, 1 FROM dual UNION ALL SELECT 'UI' , '박디비' , 190, 2 FROM dual UNION ALL SELECT 'UI' , '서디비' , 180, 3 FROM dual ) SELECT 부서 , MIN (이름) KEEP(DENSE_RANK FIRST ORDER BY 순서) 이름_first , MIN (이름) KEEP(DENSE_RANK LAST ORDER BY 순서) 이름_last FROM member GROUP BY 부서 ; |