SQL
[SQL]최소값 구하기 (min, limit, rank, all)
ollive
2024. 6. 26. 21:01
<문제>
animal_ins 테이블에서 제일 먼저 보호소에 들어온 동물의 시간(datetime)을 조회하여라.
<풀이1: min(변수명)>
min을 사용하여 datetime의 최소값을 구할 수 있다.
SELECT min(datetime)
FROM animal_ins
<풀이2: limit 제한갯수>
order by로 datetime을 정렬시킨다면 제일 위에 있는 값이 가장 먼저들어온 동물의 datetime이다. 여기에 limit를 통해 1개의 행만 추출한다면 min과 같은 결과를 얻을 수 있다.
SELECT datetime
FROM animal_ins
ORDER BY datetime limit 1
limit n1, n2를 사용하여 limit는 n1번째부터 n2개의 값을 가져올 수 있다. 따라서 limit 0,1을 사용하여 0번째부터 1개의 값을 가져와도 결과는 같다.
SELECT datetime
FROM animal_ins
ORDER BY datetime limit 0,1
<풀이3: rank() over(partition by column order by 순서변수)>
rank함수를 이용하여 datetime을 정리한 후, rank가 1인 값만 도출하였다.
SELECT datetime
FROM
(
SELECT datetime, rank() over(order by datetime) ranking
FROM animal_ins
) a
where ranking = 1
<풀이4: <= all(서브쿼리)>
ALL은 주로 서브쿼리에서 사용하며 where절의 모든 조건을 만족해야 하는 다중행 연산자이다. 따라서 모두 Ture 일 경우에만 Ture 값을 반환한다. 이 코드에서는 비교 연산자와 사용하여 최소값보다 작거나 같으면 그 값을 도출하게 하였다.
SELECT datetime
FROM animal_ins
where datetime <= all(SELECT datetime FROM animal_ins)