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
반응형