Stay Hungry Stay Foolish

프로그래머스 코딩테스트/SQL 고득점 kit

Programmers 상위 n개 레코드 (SELECT/Level 1)

dev스카이 2022. 6. 25. 23:04

클릭 시 해당 문제로 이동

 


문제 설명

보호소에 가장 먼저 들어온 동물의 이름조회한다.

 

문제 풀이

  1. SELECT문에 동물의 이름(NAME)을 적는다.
  2. FROM절에 보호소 테이블인 ANIMAL_INS를 적는다.
  3. 가장 먼저 들어온 동물을 조회하는 조건이 있으므로, 보호시작일(DATETIME)이 가장 오래된 것을 찾으면 된다. 이때, DATETIME이 최소인 것을 검색하면 되는데 WHERE절에서는 집계함수를 사용할 수 없다.
  4. 따라서 서브 쿼리를 이용한다. 서브 쿼리는 하나의 쿼리문에 포함되어 있는 또 다른 쿼리문이다. 사용하는 방법은 WHERE절에서 칼럼명 뒤에 IN을 적어주고 괄호 안에 다른 쿼리문을 적는다. IN은 괄호 내에서 일치하는 것이 있으면 TRUE로 평가된다. 

Solution

SELECT NAME FROM ANIMAL_INS WHERE DATETIME IN(SELECT MIN(DATETIME) FROM ANIMAL_INS);

※WHERE 절에 IN 대신 '='로도 가능하다.