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

    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

    댓글