SQL 기초 순서가 정해져 있을 때 첫째 와, 마지막 값 나타내기 방법 조언 부탁드립니다. 1 7 2,186

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

이렇게 표시하고싶습니다..  순서의 총 인원수는 다릅니다.

by ㅇㅇ준 [2023.03.09 10:41:29]
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 부서

 


by 쭈니 [2023.03.09 10:51:33]

예시가 잘못되었어요.. 죄송합니다

그 중 높은 숫자를 찾는것이 아닌 순차적으로 첫번째 사람와 마지막 사람의 값을 가져오는 예시 입니다.

키 를 이용해서 예시 수정하였습니다..


by 우리집아찌 [2023.03.09 10:59:29]

부서별 연봉 최대 , 최소값을 원하시는건가요?

전체 연봉 최대 , 최소값을 원하시는건가요?


by 쭈니 [2023.03.09 11:09:02]

A 컬럼에 순서가 정해져있다면

첫번째 순서의 B컬럼의 값,

마지막 순서의 B컬럼의 값 을 가져오고싶습니다.

 

기준 A B
한국 1 의사
한국 2 선생님
한국 3 교사
한국 4 축구선수

 

출력 

기준 첫번째 마지막
한국 의사 축구선수

 

 


by 우리집아찌 [2023.03.09 11:07:21]
-- 전체 연봉 최고 , 최저값
SELECT * 
  FROM (SELECT 부서, 이름, 연봉,
			 , ROW_NUMBER() OVER(ORDER BY 연봉) RN1
			 , ROW_NUMBER() OVER(ORDER BY 연봉 DESC ) RN2
		  FROM MEMBER
		)
 WHERE 1 IN ( RN1 , RN2 ) 		

 


by 마농 [2023.03.09 11:18:49]
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 부서
;

 


by 우리집아찌 [2023.03.09 11:24:11]
SELECT 기준 
     , MIN(CASE WHEN RN1 = 1 THEN B END) NM1
     , MIN(CASE WHEN RN2 = 1 THEN B END) NM2
  FROM (SELECT 기준, A, B 
			 , ROW_NUMBER() OVER(PARTITION BY 기준 ORDER BY A) RN1
			 , ROW_NUMBER() OVER(PARTITION BY 기준 ORDER BY A DESC ) RN2
		  FROM MEMBER
		)
 GROUP BY 기준
  

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입