본문 바로가기
문제풀이/SQL(Oracle)

[문제풀이] 상위 n개 레코드 / 최솟값 구하기

by kime2 2024. 1. 31.
출처

 

문제

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

 

풀이(Oracle)

SELECT NAME -- 4. 필터링 된 데이터의 이름 조회
FROM ANIMALINS -- 2. animalins테이블에서
WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMALINS) --  1.ANIMALINS에서 DATETIME의 최소값(제일 오래된 날짜) 조회
-- 3. 서브쿼리에 조회된 DATETIME과 동일 한 DATETIME일 경우 필터링
SELECT name -- 6. 필터링된 데이터의 name 조회
FROM -- 4. 서브쿼리에서 조회된 테이블에서
(
SELECT name -- 2. name을 조회하는데
FROM animal_ins -- 1. animal_ins테이블에서 
ORDER BY datetime -- 3. datetime의 오름차순으로
)
WHERE rownum = 1 -- 5. 임시컬럼이 1인 경우 필터링

문제

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

 

풀이(Oracle)

select datetime
from 
(SELECT datetime
from animal_ins
order by datetime asc)a
where rownum = 1

배운점

 
  • rownum: 오라클에서 제공하는 가상의 임세컬럼으로 조회된 순으로 순번을 메긴다
  • 오라클에서는 limt을 적용할 수 없음