코딩테스트/SQL 코드카타

SQL 프로그래머스 | 최솟값 구하기 | MIN(날짜) | LIMIT 사용 | ALL, ANY 사용법

ANNASENA 2024. 1. 26. 12:24
728x90

 

최솟값 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/59038

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

 

▼ MIN(날짜) 사용

SELECT MIN(DATETIME) "시간"
FROM ANIMAL_INS

 

동물보호소에 가장 먼저 들어온 동물을 찾고 있으므로

간단하게 MIN(날짜) 함수가장 과거의 시간을 조회할 수 있음


▼ 서브쿼리, MIN(날짜) 사용

SELECT min_date "시간"
FROM (SELECT MIN(DATETIME) min_date FROM ANIMAL_INS) A

 

위 과정을 굳이 서브쿼리를 사용해서 구해본다면

FROM절 서브쿼리에서 MIN(날짜)를 뽑아준 뒤

그것을 메인쿼리에서 다시 조회해줌


▼ LIMIT 사용

SELECT DATETIME "시간"
FROM ANIMAL_INS
ORDER BY DATETIME LIMIT 1

 

날짜 별로 오름차순 정렬을 해주면

가장 과거의 날짜부터 시작해서 최근의 날짜까지 정렬이 됨

LIMIT을 이용해 첫 번째(제일 과거 날짜) 행의 결과를 조회하면 됨


▼ ALL() 사용

SELECT DATETIME from ANIMAL_INS where DATETIME <= ALL(select DATETIME from ANIMAL_INS)

 

어떤 분은 WHERE절에 조건을 주면서

<= ALL(서브쿼리)를 사용하셨는데

ALL 사용법이 궁금해서 찾아보게 됨

 

모든 날짜를 조회하되, 그것 중 가장 작거나 같은 날짜를 찾고 있으므로

정답은 잘 나온 것 같음

 

[참고 게시글]

다중 행 연산자 ALL, ANY에 대해 더 자세히 알고싶은 분은 클릭!

https://seulhee030.tistory.com/50

 

[SQL] any, all 함수 완벽 정리

1. ANY 주로 서브쿼리에서 사용하는 다중 행 연산자이다. 조건을 만족하는 값이 하나라도 있다면 결과를 리턴한다. select * from student where id = any('1001', '1002', '1003') --1001, 1002, 1003 중 하나라도 만족

seulhee030.tistory.com

 

728x90