728x90
반응형
<목차> |
※ 자료출처: 데이터 자격검정 협회
5. TOP N 쿼리
TOP N 쿼리 개요
- TOP N 쿼리: 인라인 뷰에 먼저 정렬을 수행하고 정렬된 결과 중에서 일부 데이터를 추출하는 것 (SQL Server에서만 지원)
- 결과 집합으로 출력되는 행의 수 제한
- TOP N 쿼리를 수행하기 위해서는 정렬 작업과 정렬 결과 중에서 일부 데이터만을 추출할 수 있는 방법 필요
- Oracle 에서는 ROWNUM 이라는 연산자를 통해서 결과로 추출하고자 하는 데이터 건수를 제약 가능
※ 인라인 뷰: FROM 절에서 사용되는 서브쿼리.
- 서브쿼리의 결과가 마치 실행 시에 동적으로 생성된 테이블인 것처럼 사용 가능.
- 인라인 뷰는 SQL문이 실행될 때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않음.
TOP 절의 표현식
TOP(Expression) [PERCENT] [WITH TIES] |
- Expression: 반환할 행의 수 지정하는 숫자
- PERCENT: 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨
- WITH TIES: ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정
- 한 건의 행만 가져오고 싶을 때
SELECT TOP(1) PLAYER_NAME FROM PLAYER; |
- 두 건 이상의 N행을 가져오고 싶을 때
SELECT TOP(N) PLAYER_NAME FROM PLAYER; |
ROWNUM과 TOP 절
SQL 문장에서 ORDER BY 절이 사용되지 않으면 Oracle의 ROWNUM 과 SQL Server 의 TOP 절은 같은 기능을 하지만, ORDER BY 절이 사용되면 기능의 차이 발생
[예제]
모든 선수들 중에서 가장 키가 큰 5명의 선수를 출력. 정렬은 내림차순
SELECT TOP(5) PLAYER_NAME AS 선수명, POSITION AS 포지션, BACK_NO AS 백넘버, HEIGHT AS 키 FROM PLAYER WHERE HEIGHT IS NOT NULL ORDER BY HEIGHT DESC |
<Oracle>
SELECT PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM (SELECT PLAYER_NAME, POSITION, BACK_NO, HEIGHT FROM PLAYER WHERE HEIGHT IS NOT NULL ORDER BY HEIGHT DESC) WHERE ROWNUM <= 5; |
보강 내용
이전글
다음글
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2과목 SQL 활용 - 계층형 질의와 셀프 조인 (2) (0) | 2024.01.26 |
---|---|
SQLD 2과목 SQL 활용 - 계층형 질의와 셀프 조인 (1) (1) | 2024.01.26 |
SQLD 2과목 SQL 활용 - 윈도우 함수 (2) | 2024.01.24 |
SQLD 2과목 SQL 활용 - 그룹 함수 (1) | 2024.01.23 |
SQLD 2과목 SQL 활용 - 집합연산자 (1) | 2024.01.16 |