🔍 알고리즘/프로그래머스 SQL
[SQL] 프로그래머스 59405번. 상위 n개 레코드 (Lv.1)
노딩코
2022. 9. 27. 22:15
https://school.programmers.co.kr/learn/courses/30/lessons/59405
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
머리를 좀 써야하는 문제입니다. 두가지 풀이가 가능합니다.
SELECT name
FROM animal_ins
ORDER BY datetime ASC
LIMIT 1
좀 더 쉬운 풀이는 그냥 datetime을 기준으로 정렬하고 LIMIT를 사용해 딱 하나의 row만 출력하는 겁니다.
datetime으로 오름차순 정렬후 맨 위의 row만 출력하기 때문에 당연히 가장 먼저 들어온 동물의 name이 출력됩니다.
SELECT name
FROM (
SELECT name, RANK() OVER(ORDER BY datetime ASC) AS date_rank
FROM animal_ins
) AS R
WHERE R.date_rank = 1
조금 더 복잡한 풀이는 datetime을 기준으로 정렬하고, date_rank라는 새로운 column을 RANK()를 통해 만듭니다.
즉 테이블이 동물의 name과 datetime의 순위 두개의 column을 가지게 되고 이 때 date_rank가 1인 row가 가장 먼저 들어온 동물의 정보가 됩니다.
728x90