다음은 동물 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블입니다.
ANIMAL_INS 테이블은 다음과 같으며 각 컬럼은 아래를 의미합니다.
| Column name | Type | Nullable | 설명 |
|---|---|---|---|
| ANIMAL_ID | VARCHAR(N) | FALSE | 동물의 고유 ID |
| ANIMAL_TYPE | VARCHAR(N) | FALSE | 생물 종 (개, 고양이 등) |
| DATETIME | DATETIME | FALSE | 보호 시작일시 |
| INTAKE_CONDITION | VARCHAR(N) | FALSE | 입소 당시 상태 |
| NAME | VARCHAR(N) | TRUE | 동물 이름 |
| SEX_UPON_INTAKE | VARCHAR(N) | FALSE | 입소 당시 성별 및 중성화 여부 |
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL문을 작성해주세요.
※ 보호소에 가장 먼저 들어온 동물은 한 마리인 경우만 테스트 케이스로 주어집니다.
SELECT name
FROM animal_ins
ORDER BY datetime
LIMIT 1;
SELECT name
FROM animal_ins
WHERE datetime = (
SELECT MIN(datetime)
FROM animal_ins
);
MIN(datetime)으로 가장 먼저 입소한 시간을 뽑고
그 시간과 같은 DATETIME을 가진 동물을 조회
LIMIT 없이 논리적으로 "가장 먼저 입소한 동물"을 표현할 수 있음
아래와 같은 문장은 문법 오류
SELECT name
FROM animal_ins
WHERE MIN(datetime); -- ❌ 오류 발생
집계 함수는 WHERE에서 사용할 수 없고, SELECT, HAVING, ORDER BY 에서만 사용해야 합니다.
그래서 서브 쿼리 안 쓸거면 HAVING으로 써야 함
-- 예시: 집계 조건은 HAVING에서 사용
SELECT MIN(datetime)
FROM animal_ins
HAVING MIN(datetime) < '2023-01-01';