나는 다음과 같은 순서로 문제를 해결하고자 했다.
- 날짜 중 가장 최소값 찾기
- 날짜가 최솟값인 records의 NAME 출력
SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME = MIN(DATETIME);
# SQL 실행 중 오류가 발생하였습니다.
위와 같은 에러가 발생하였다.. 검색해보니 DATETIME에 MIN()을 사용할 수 있던데..
생각해보니 서브 쿼리에서 MIN(DATETIME)을 WHERE 절에 사용한 것이 잘 못 되었다... MIN() / MAX() / SUM()과 같은 애들은 ```SELECT``` statement에서만 사용가능하다는 것!!!
집계함수
집계함수들은 입력이 여러 개의 records고 출력이 하나의 값으로 나오는데 집계함수 자체가 여러 records를 SELECT 해야 값이 나올 수 있다. 또한 WHERE 절은 조회할 집계되지 않은 자료에 대한 조건에 대한 것이니까 집계 함수를 쓰면 안 된다고!!
SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME IN (SELECT MIN(DATETIME) FROM ANIMAL_INS);
따라서 서브 쿼리를 이용해서 풀면 위와 같이 구할 수 있다!!!