본문 바로가기
Database

[Programmers] 최솟값 구하기(풀이 성공)

by 전봇대파괴자 2021. 5. 12.

문제

 

다음과 같은 테이블 ANIMAL_INS가 주어진다. 

 

동물 보호소에 가장 먼저 들어온 동물이 언제 들어왔는지를 조회하라.

 

내 코드:

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

Comment: '언제' 들어왔는지를 조회하는 것이므로 DATETIME을 조회해야 합니다. 가장 먼저 들어온 동물을 찾기 위해서는 ORDER BY를 통해 DATETIME을 기준으로 테이블을 정렬하고, ROWNUM으로 첫 번째 값을 꺼내면 됩니다. 하지만 ORDER BY의 실행 순서는 가장 나중이므로, 그냥 썼다가는 엉뚱한 값을 조회할 수 있습니다. 

 

이 때는 FROM 뒤에 괄호를 열어 미리 정렬을 해주는 것으로 순서를 앞당기고, 정답값을 조회할 수 있습니다. DATETIME 뒤에 DESC를 붙이지 않도록 주의하세요.