쿼리 질문입니다. 책에서 나온건데 이해가 안되서요. 0 4 1,772

by 히로스에료짱 [2012.11.14 22:34:20]



안녕하세요.
열심히 공부중인 직장인입니다.

책에서 나온 내용중에
SELECT DEPARTMENT_ID
,LAST_NAME
,SALARY
,(
SELECT COUNT(SALARY)+1
FROM EMPLOYEES
WHERE DEPARTMENT_ID =80
AND E.SALARY>SALARY)rnk
FROM EMPLOYEES E
WHERE DEPARTMENT_ID =80
ORDER BY RNK ASC;

RANK()함수를 사용하지 않고 순위를 얻는 방법인데 이해가 잘안되서요.
서브쿼리로 E.SALARY>SALARY)rnk 부분이 이해가 잘안되네요.
도와주세요.
by 마농 [2012.11.14 23:50:05]
앗! 오케클릭님! 거꾸로 설명하셨어요!!!

by 오케클릭 [2012.11.15 00:10:36]

헉...그러네요...ㅠㅠ 혼란을 드려 죄송합니다.  잘못된 글은 삭제할께요 >_<


by 오케클릭 [2012.11.15 04:15:58]

 E.SALARY 와 서브쿼리 SALARY를 이해하시면 쉽습니다.

즉 E.SALARY 는 각각의 ROW이고 SALARY(서브쿼리 안에)는 전체값 이므로

서브쿼리 자체의 의미는 자기보다 봉급이 적은사람의 수+1 이라는 의미 입니다.

HONG 1000
KIM 2000
HWANG 3000

이런 데이터인 경우

서쿼는 아래와 같은 값을 가지게 되겠죠
HONG 1000 (서브쿼리는 자기보다 적은사람 없으니 COUNT 는 0 + 1 이니 1)
KIM 2000 (자기보다 적은사람 COUNT1 + 1 이니 2)
HWANG 3000 (자기보다 적은 사람이 2 +1 이니 3)
이걸 정상쿼리에서 ORDER 를 RNK ASC 를 했으니..

HONG 1000
KIM 2000
HWANG 3000

이렇게 보여지는겁니다.

아...실수 죄송해요.
보통은 쿼리짤 때
원 테이블의 컬럼을 왼쪽에 두고 비교할 값을 오른쪽에 두는 습관때문에..

by 히로스에료짱 [2012.11.16 00:03:52]

고맙습니다. 한번에 이해가 되었네요 ^^;;

공부하는데 너무 많은 도움을 주셔서 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입