간헐적으로 반복되는 값에 순번 매기기 0 2 441

by 초보맨 [2020.05.29 13:10:34]


구분 금액 순번  
01 5000 1  
02 5000 1  
03 18000 2  
04 15000 3  
05 15000 3  
06 5000 4  
07 5000 4  
08 18000 5  

위 표의 순번  값을 구하려고 합니다. 

금액을 기준으로 다른 값이 나올때마다 순번을 증가 시키려고 

Rank 와 Row_number 등을 써서 해보려 하는데 잘 안되네요 ㅠㅠ

 

by 랑에1 [2020.05.29 14:10:15]
WITH T(gb, amt) AS (
	SELECT '01', 5000 FROM DUAL UNION ALL
	SELECT '02', 5000 FROM DUAL UNION ALL
	SELECT '03', 18000 FROM DUAL UNION ALL
	SELECT '04', 15000 FROM DUAL UNION ALL
	SELECT '05', 15000 FROM DUAL UNION ALL
	SELECT '06', 5000 FROM DUAL UNION ALL
	SELECT '07', 5000 FROM DUAL UNION ALL
	SELECT '08', 18000 FROM DUAL         
)

SELECT gb, amt
     , SUM(seq) OVER(ORDER BY gb) AS seq
FROM 
(
	SELECT gb, amt
	    ,  DECODE(amt, LAG(amt, 1) OVER(ORDER BY gb), 0, 1) AS seq
	FROM T
)
ORDER BY gb

 


by 초보맨2 [2020.05.29 15:54:23]

sum over 를 전혀 생각 못했네요 

감사합니다. 

잘 배우고 갑니다.

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