개발 일지/SQL_ORACLE

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

박빙수_ 2024. 9. 22. 23:54

 

프로그래머스 Lv.1 상위 n개 레코드

 

문제:
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

 

Point:

rownum을 활용하여 푸는 문제다.


1) 첫 시도

SELECT NAME
FROM ANIMAL_INS
WHERE rownum = 1
ORDER BY DATETIME;

 

결과:

SQL 실행 중 오류가 발생하였습니다.
Unknown column 'rownum' in 'where clause'

 

분석:

ORDER BY가 가장 마지막에 적용되는 라인인데, 이걸 무시하고 Where절에서 rownum을 걸어놓고 완료했다고 생각했다. 

 

2) 두 번째 시도

SELECT a.NAME
FROM (SELECT NAME
      FROM ANIMAL_INS
      ORDER BY DATETIME) a
WHERE ROWNUM <= 1

 

변화지점:

애초에 정렬이 된 것을 불러오면 문제가 사라질 것 같다. 서브쿼리로 데이터를 정렬시킨 테이블에서 NAME을 가져오는 방식을 채택했다.

 

결과:

name

Jack

 

성공!