Hodustory/프로그래밍&DB

[SQL] 프로그래머스 : 상위N개 레코드 (SELECT)

호두밥 2021. 7. 25. 13:59

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/59405

 

코딩테스트 연습 - 상위 n개 레코드

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

2. 풀이

- 가장 오래된 값을 출력해야 함   

- 첫번째 방법 : 스칼라 서브 쿼리를 이용

   -> where  시간 = (가장 오래된 시간)

- 두번째 방법 : order by 이용

   -오래된 순으로 정렬 후 가장 상위의 값 1개만 가져오기

   - 오라클(ORACLE) : ROWNUM을 이용

   - MYSQL             : LIMIT을 이용

   - SQL SERVER      : TOP n을 이용

3. 답안

첫번째 방법

SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS)

두번째 방법

--ORACLE
SELECT NAME FROM
(SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC ) T
WHERE ROWNUM <= 1
--MYSQL
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC 
LIMIT 1
--SQL SERVER
SELECT TOP 1 NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
반응형