윈도우함수 RANGE 문의 2

by 이삭 [SQL Query] [2022.08.26 15:48:17]


RANGE 함수 공부 도중 이해가 잘 안되서 문의 드립니다.

 

SQL 작성된걸 보면 DEPARTMENT_ID 기준으로 SALARY값을 내림차순 정렬하고 현재 SALARY 값보다 -2000에 포함되는 SALARY 값의 갯수를 나타낸다라고 이해하고있고

그래서 DEPARTMENT_ID 10 그룹으로 보면

1행 4000~6000    4400,6000 2개

2행 2400~4400    2600,3100,4400 3개

3행 1100~3100    2600,3100 2개

4행 600~2600     2600 1개

 

저는 이렇게 나올거라 생각하는데 다른 결과가 나와서 이해가 잘안되네요 

by jkson [2022.08.26 16:08:22]

salary가 desc로 소트했을 때이므로

range between 2000 and current row의 뜻은 salary between 현재 salary and 현재 salary + 2000인 값을 가져오는 것입니다.

결과 테이블 보면 

1행은 10 부서에서 6000 ~ 8000인 게 자기 자신 밖에 없으므로 1개

2행은 10 부서에서 4400 ~ 6400인 게 6000과 4400이므로 2개

이런 식으로요. 

말씀하신대로 나오려면 desc를 빼야겠죠.


by 이삭 [2022.08.26 16:17:45]

감사합니다.  이제 이해되네요 

PRECEDING 만 생각하다 보니 DESC일때 +가 되는건 생각을 못했습니다. 

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