Search

최댓값 구하기

생성일
2022/03/03 16:56
플랫폼
프로그래머스
태그
MAX
level
1
분류
무난히 해결
링크

Problem

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
Search
NAME
TYPE
NULLABLE
VARCHAR(N)
FALSE
DATETIME
FALSE
VARCHAR(N)
FALSE
VARCHAR(N)
TRUE
VARCHAR(N)
FALSE
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면
Search
ANIMAL_ID
ANIMAL_TYPE
DATETIME
INTAKE_CONDITION
NAME
SEX_UPON_INTAKE
Dog
2013/10/14 15:38
Normal
Jack
Neutered Male
Dog
2013/10/23 11:42
Normal
Disciple
Intact Male
Dog
2013/11/03 15:04
Normal
Katie
Spayed Female
Dog
2013/11/18 17:03
Normal
Anna
Spayed Female
가장 늦게 들어온 동물은 Anna이고, Anna는 2013-11-18 17:03:00에 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
시간
2013-11-18 17:03:00
※ 컬럼 이름(위 예제에서는 "시간")은 일치하지 않아도 됩니다.

Code

 #1. 비효율적인 코드

Idea

DATETIME 이 가장 큰 행을 불러와야 한다.
WHERE절에서 서브쿼리를 써서 가장 큰 DATETIME 을 찾았다.
하지만 이는 비효율적인 코드이다.

 Code

SELECT DATETIME AS 시간 FROM ANIMAL_INS WHERE DATETIME = (SELECT MAX(DATETIME) FROM ANIMAL_INS);
SQL
복사
그냥 아래처럼 한 줄로 가능하다.
SELECT max(datetime) as 시간 from animal_ins;
SQL
복사

 #2. LIMIT 사용

Idea

최댓값이나 최솟값을 뽑으면 되는 것이므로, ORDER BY 로 정렬을 한 다음에 LIMIT 1 을 걸어주면 된다.

 Code

SELECT DATETIME AS 시간 FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1
SQL
복사

Commentary