Loading...

DB/Oracle / / 2022. 2. 9. 16:09

DB 28강. 인라인뷰

반응형

 

-- 번호는 안붙어있지만 순위는 매겨져있음
SELECT ename, sal 
FROM emp 
ORDER BY sal desc;

내림차순으로 정렬된 데이터 옆에

순위를 매기고 싶다.

 

이때 ROWNUM을 사용한다.

 

하드 디스크에 있는 데이터를

FROM emp로 퍼올리면

데이터를 하나씩 꺼내며

메모리에 올린다.

 

하나씩 꺼내 올리기 때문에

rownum이 3보다 작은것들은 찾을 수 있다.

-- 하나씩 꺼내기때문에 찾을 수 있음
SELECT ename, sal, rownum 
FROM emp 
WHERE rownum < 3;

 

하지만 바로 3을 찾으면

1과 2를 모르기 때문에 찾을 수 없다.

실행해봐도 아무런 결과값이 없을 것이다.

-- rownum이 동작(번호 생성)하는 시점은 프로젝션 할 때이다.
-- 1, 2를 모르니까 3도 모르는 것이다.
-- 어차피 이렇게 쓰지도 않음 !!!
SELECT ename, sal, rownum 
FROM emp 
WHERE rownum > 3;

rownum은 자바의 연결 리스트와 비슷하다.

1번이 누구인지 모르므로

3번도 찾을 수 없는 것이다.

 

-- FROM이 들고있는 rownum을 사용하려면 아래와 같이 별칭을 쓴다
SELECT ename, sal, R1
FROM(
    SELECT ename, sal, rownum R1 
    FROM emp 
    ORDER BY sal desc
);

 


 

데이터베이스에서 뷰는 가짜를 의미한다.

뷰는 저장장치내에 물리적으로 존재하지는 않지만

사용자에게 있는것처럼 간주된다.

 

임시적인 작업을 위한

용도로 활용된다.

-- 인라인뷰, 데이터베이스에서 뷰는 가짜를 의미함
SELECT ename, sal, rownum
FROM(
	SELECT ename, sal 
	FROM emp 
	ORDER BY sal desc
);

 

 


 

-- student 테이블에 키 순위를 구하고 5~8위 출력
SELECT name, height, rank
FROM(
    SELECT e1.*, rownum rank
    FROM(
        SELECT name, height 
        FROM student
        ORDER BY height desc
    ) e1
)
WHERE rank >= 5 AND rank <= 8;

 

 

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

 

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

 

반응형