TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

SQLD 2과목 SQL 활용 - TOP N 쿼리

by 기록자_Recordian 2024. 1. 25.
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;

 


보강 내용
 

[SQLD] TOP N Query (보강)

해당 범위는 2024년부터 새로 추가된 범위라 내용이 많이 부족하여 내용을 추가하였습니다. 기존 내용 SQLD 2과목 SQL 활용 - TOP N 쿼리 서브쿼리 집합연산자 그룹 함수 윈도우 함수 TOP N 쿼리 계층형

puppy-foot-it.tistory.com

 


이전글

윈도우 함수

 

다음글

계층형 질의와 셀프 조인 (1)

728x90
반응형