문제풀이

[Oracle] 프로그래머스_상위 n개 레코드

Sunday31 2022. 11. 24. 19:48

SELECT > 상위 n개 레코드

 

오라클을 얕게 배워서 그런지 간단해보이는 문제도 내겐 조금 어렵다;😥

갈 길이 멀지만 천천히라도 가면서 헤맸던 문제들을 풀었던 기록을 남기려 한다.

 

문제

 

문제 접근 방식

 

1. 일단 동물의 이름을 조회

  • 그럼 SELECT로 NAME을 검색해야겠다.
  • 테이블이 하나니까 당연히 FROM은 ANIMAL_INS고,
  • 남은 건 WHERE 조건식이다.
SELECT NAME
FROM ANIMAL_INS

 

2. 가장 먼저 들어온 동물의 이름

  • 일단 들어온 걸 확인할 수 있는 필드는 DATETIME이다.
  • 먼저 들어왔다는 건 DATETIME의 숫자가 적다는 것을 의미한다. 시간은 흐를수록 숫자가 커지니까.
    그렇다면최소값을 구하는 그룹함수 min()으로 구할 수 있을 것 같다.
  • 그럼 Where = MIN(DATETIME) 인가? 
    • 아니다. 그룹함수는 보통 SELECT문에 사용하고, 조건식에 있으려면 having을 사용해야 한다.
    • 그렇다면 서브쿼리를 사용해 집어넣을 수 있을 것 같다. (서브쿼리를 생각해내는 데서 헤맸다;;바보임)
  • where = DATETIME (select min(DATETIME) from  ANIMAL_INS)
SELECT NAME
FROM ANIMAL_INS 
WHERE DATETIME=(SELECT min(DATETIME) FROM ANIMAL_INS);

 

답안

 

결과

오예!