Post

[Programmers/프로그래머스] SQL High Score Kit : 상위 n개 레코드 (Oracle)


SQL High Score Kit : 상위 n개 레코드


문제


image image


풀이


  • SELECT 동물 이름
  • FROM (보호소에 들어온 날짜 오름차순 정렬 서브쿼리)
  • WEHRE ROWNUM = 1;

    🔽

  • SELECT 동물 이름
  • FROM (SELECT 동물 이름 FROM ANIMAL_INS ORDER BY 보호 시작일 오름차순)
  • WEHRE ROWNUM = 1;


SQL문


1
2
3
4
// Oracle
SELECT NAME
FROM (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME)
WHERE ROWNUM = 1;


배운 점 메모


  1. 상위 N개 데이터 조회하기

    a. Oracle
    ⇒ 서브쿼리와 ROWNUM 사용
    ROWNUM은 조회된 순서로 순번을 매기는 가상 컬럼

    1
    2
    3
    4
    5
    
    // 상위 n개 행 조회하기
    
    SELECT [컬럼1], [컬럼2], ...
    FROM ([정렬 서브쿼리])
    WHERE ROWNUM <= n;
    

    b. MS-SQL
    TOP 사용

    1
    2
    3
    4
    5
    6
    
    // 상위 n개 행 조회하기(n개만 출력)
    
    SELECT TOP [레코드 수] [컬럼1], [컬럼2], ...
    FROM [테이블명]
    WHERE [조건절]
    ORDER BY [정렬 조건];
    
    1
    2
    3
    4
    5
    6
    
    // 상위 n개 행 조회하기(중복 데이터도 출력)
    
    SELECT TOP [레코드 수] WITH TIES [컬럼1], [컬럼2], ...
    FROM [테이블명]
    WHERE [조건절]
    ORDER BY [정렬 조건];
    

    c. MySQL
    LIMIT 사용

    1
    2
    3
    4
    5
    
    // 상위 n개 행 조회하기
    
    SELECT [컬럼1], [컬럼2], ...
    FROM [테이블명]
    ORDER BY [정렬 조건] LIMIT n;
    


참고 사이트


[SQL] 상위 n개 데이터 조회하기
[Oracle] 상위 n개 데이터를 추출하는 2가지 방법
[Oracle] ROWNUM과 사용할 시 주의할 점
[MS SQL SERVER] TOP, TOP WITH TIES 차이