본문 바로가기
[스파르타코딩클럽]데이터분석 과정/SQL

[SQL] N개의 데이터 조회_(MySQL) LIMIT / (ORACLE) ROWNUM & FETCH 함수

by doo_ 2023. 12. 27.

<MySQL>

[LIMIT] 과 [OFFSET]

SELECT *
FROM TABLE
-- 1) 첫 행부터 N개의 데이터만
LIMIT n
-- 2) M번째 행부터 N개의 데이터만
LIMIT m, n
-- 3) OFFSET을 활용한 M번째 행부터 N개의 데이터만
LIMIT n OFFSET m

(참고) 사이트를 만들다 보면 Paging 할 때가 있는데, 그때 OFFSET 유용하다고 한다.

 

<ORACLE>

[ROWNUM]

+) Sql Server에서는 top함수 사용

> 조회한 데이터에 일련번호를 붙여준다.

> ROWNUM 사용할 때 주의,

  : DML 쿼리 기본 진행 순서는 다음과 같다 : [FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY ]

 

다음 예시를 보면,

SELECT CITY, LENGTH(CITY)
FROM STATION
WHERE ROWNUM = 1 ;

SELECT CITY, LENGTH(CITY)
FROM (SELECT CITY, LENGTH(CITY)
      FROM STATION
      ORDER BY LENGTH(CITY), CITY ASC)
WHERE ROWNUM = 1 ;

 

즉, ROWNUM 활용하기 위해서는 FROM절에 서브쿼리를 활용해 미리 정렬을 해준 다음에 써야 한다.

 

> 하위 5개 데이터 불러오기

SELECT CITY, LENGTH(CITY)
FROM (SELECT CITY, LENGTH(CITY)
      FROM STATION
      ORDER BY LENGTH(CITY), CITY ASC)
WHERE ROWNUM <= 5 ;

 

[FETCH 함수] _참고 사이트_

+) Sql Server 에서는 LIMIT 함수를 통해 n개의 행을 불러올 수 있다.

- ORACLE 12c 부터 사용가능한 함수.. Hacker Rank는 oracle 11g..

 -- 기본 형태
 FETCH  [NEXT | FIRST] [ row_count | percent PERCENT ] ROWS  [ ONLY | WITH TIES ]

> 용어 설명

    a.  NEXT - FIRST를 대신해서 사용할 수 있다.

    b.  row_count - n개에 해당하는 값을 불러온다  

    c.  percent - %해당하는 값을 불러온다.

    d. ONLY - 딱 N개에 해당하는 값만 불러온다.

    e.  WITH TIES - 같은 값인 경우 포함해서 불러온다.

 

> 문제 풀다가 나오는 경우 예시 사용할 예정입니다 ㅎㅎ,