ROW_NUMBER(출력되는결과를 원하는 컬럼별 순서대로넘버링)
row_number() over (order by sal desc) as 별칭
—> ____ 에 order by 문법을 꼭 부여해야한다.
→넘버링을 하는이유는, 어떤 출력 되는 결과의 몇번째 행을 출력 시킬때 유용하다.
예제 : row_number 데이터 분석함수는 출력되는 select 문의 결과의 행에 numbering(번호부여) 하는 함수이다.
넘버링의 장점은 : 출력되는 결과의 두번째, 세번째 등등 원하는 행을 출력,검색 할 수 있다.
select empno, ename, sal, row_number() over (order by empno asc)번호
from emp
where deptno= 20;
위의 식의결과에서 두번째행만 출력 하세요.
from 절에 서브쿼리를 사용해주어야한다.
→서브쿼리를 쓰게 되면, 서브쿼리가 먼저 실행된후에 메인쿼리가 실행된다.
select *
from (
select empno, ename, sal, row_number() over (order by empno asc) 번호
from emp where deptno= 20
)
where 번호 = 2;
→ 별칭을 꼭 주어야한다. 별칭 쓰지않고 row_number ~~~ 의 컬럼명을 쓰게 되면 오류
사원테이블 전체를 출력하면서 3번째행만 출력하세요
select *
from (
select empno, ename, job, mgr, hiredate, sal,comm,deptno,
row_number() over (order by rowid asc)번호
from emp
where deptno= 20
)
where 번호 = 3;
→ rowid : 행의 주소 , 어느 테이블이든 다 존재한다.
→ 서브쿼리 select 절에 (*) 쓰고 싶다면? 컬럼명이 너무 많을 경우에는 다 기재하기 힘들기 때문,
select *
from (
select e.*, row_number() over (order by rowid) 번호
from emp e
)
where 번호 = 3;
전체 테이블을 출력하면서 같은행을 추가적으로 더 출력할때
select emp.* , deptno
from emp;
또는
emp 에 별칭 e를 주어
select e.*, deptno
from emp e;
테이블의 모든 컬럼들을 다 출력하면서, 그옆에 기존 컬럼을 또 출력하고싶을때, 모든 컬럼을 편하게 출력할 수 있도록 [테이블.] 을 사용하거나 [테이블 별칭.] 을 쓰면 된다.
'Oracle > SQL' 카테고리의 다른 글
SQL 데이터 변환 - Pivot , Unpivot (0) | 2021.11.22 |
---|---|
SQL Sum + Decode 컬럼을 행으로 바꿔 출력 (0) | 2021.11.22 |
SQL 데이터 분석함수 - 집계결과 출력 Grouping sets (0) | 2021.11.22 |
SQL 데이터 분석함수 - 집계결과 출력 Cube (0) | 2021.11.19 |
SQL 데이터 분석함수 - 집계결과 출력 Rollup (0) | 2021.11.19 |