인사이트
[SQL] ROWNUM 본문
오라클DB에서 제공하는 특별한 column 이 있다.
바로 rownum이라는 아이이다.
바로 예제로 가보겠다.
급여가 가장 높은 사람을 순서대로 세운 다음, 그 중 2~4번째인 사람의 데이터를 조회하라는 미션을 받았다.
난 아주 당당하게 위처럼 적었고, 당연히 실행될 줄 알았다.
왜냐면 저 의미자체가 emp라는 테이블에서 rownum이 2~4번째인 사람의 데이터만을 가져오라는 거니까
결과는 처참했다(나오지 않았다ㅎㅎ)
왜 안나왔을까? 문제가 없어보이는데 말이다.
2가지를 간과했었기 때문이다.
1. Rownum이 카운트를 할 땐 반드시 1부터 시작한다.
2. 쿼리 실행 순서는 from > where > group by > having > select > order by이다.
위 두 문제점을 해결하려면 어떻게 하면 될까?
1.Rownum을 1부터 카운트하게 해주면 된다.
2.Rownum을 아예 테이블 자체에 넣어서 정렬해주면 된다.
해결책을 적용해서 위처럼 바꿔주면
짜잔!
이렇게 잘 나온다.
맨 앞에 있는 숫자 1,2,3은 시스템이 알아서 넣어주는 rownum이고, 두번째 RM이라는 열 아래있는 2,3,4는 내가 주황색부분에서 임의로 넣어준 rownum이다.
'ORACLE DB (SQL)' 카테고리의 다른 글
[SQL] in과 =은 함께 쓸 수 없다 (0) | 2021.05.31 |
---|---|
[SQL] SELF JOIN (0) | 2021.05.27 |
[SQL] SQL developer 명령어 정리2 (0) | 2021.05.27 |
[SQL] SQL developer 명령어 정리 (0) | 2021.05.26 |
[SQL] SQL developer 강제 종료 시 이전에 작성했던 쿼리 보는 법(저장 못함) (0) | 2021.05.26 |