본문 바로가기
Data Engineering/SQL

[SQL] 상위 n개 레코드 출력하기 - 오라클(Oracle), MySQL

by jangThang 2022. 3. 5.
반응형

프로그래머스(Programmers)

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    코딩테스트 연습 - 상위 n개 레코드

    ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

    programmers.co.kr

     

     

     

    2. 문제 풀이

     예시는 상위 N개의 레코드를 구하는 문제입니다.

     

    Oracle) WHERE rownum = N
    MySQL) LIMIT N
    ORDER BY col

     먼저 특정 컬럼에 대해 오름차순/내림차순 정렬 후 N개의 레코드만 뽑아냅니다.

     Orcale은 rownum의 개수를 한정해서 상위 N개의 레코드를 추출하고, MySQL는 LIMIT문을 이용해서 추출합니다.

     

     

     

    3. 코드

    SELECT NAME
    FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME)
    WHERE rownum = 1;

     오라클은 하위 질의를 이용해서 해당 질의 테이블의 상위 N개의 레코드를 뽑아냅니다. 단순히 WHERE rownum을 하면 오류가 납니다.

     

    SELECT NAME
    FROM ANIMAL_INS
    ORDER BY DATETIME
    LIMIT 1

     MySQL은 보다 코드가 단순합니다. LIMIT로 상위 N개를 결정합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글