Coding Test/Programmers
[SQL][Programmers]상위 n개 레코드
예롱메롱
2025. 3. 4. 20:59
728x90
반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해라.
✅ SQL 해결 방법
1️⃣ MIN()을 이용한 서브쿼리 방법
SELECT NAME FROM ANIMAL_INS WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS);
2️⃣ ORDER BY + LIMIT 방식 (더 효율적)
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1;
3️⃣ ROW_NUMBER()를 이용한 방식
WITH Ranked AS (
SELECT NAME, ROW_NUMBER() OVER (ORDER BY DATETIME ASC) AS rn
FROM ANIMAL_INS
)
SELECT NAME
FROM Ranked
WHERE rn = 1;
4️⃣ RANK()를 이용한 방식 (동점자 처리)
WITH Ranked AS (
SELECT NAME, RANK() OVER (ORDER BY DATETIME ASC) AS rnk
FROM ANIMAL_INS
)
SELECT NAME
FROM Ranked
WHERE rnk = 1;
⚒️ 효율성 비교
방법 | 장점 | 단점 |
MIN() 서브쿼리 | 간단한 문법 | 서브쿼리 사용으로 성능 저하 가능 |
ORDER BY + LIMIT | 성능이 좋고 간단함 | MySQL에서는 최적이지만 일부 DB에서 LIMIT 미지원 |
ROW_NUMBER() | 정렬 후 개별 순위 부여 가능 | MySQL 8.0 이상 또는 Oracle에서만 가능 |
RANK() | 동점자 처리 가능 | 동점자가 많을 경우 여러 행이 나올 수 있음 |

728x90
반응형