by 쭈니 [SQL Query] [2023.03.09 10:37:43]
순위함수로 첫번째의 값과, 마지막의 값을 가져오고 싶은데
어떤 방법이 있나요?
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
이렇게 표시하고싶습니다.. 순서의 총 인원수는 다릅니다.
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 부서
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 부서 ;