이번에 다뤄볼 문제는 정렬과 조건을 함께 활용해 데이터를 조회하는 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/131697
프로그래머스 기준 Lv.1 문제이며, 풀이 후 해설과 함께 정리해보도록 하겠습니다.
문제에서 주어진 요구사항은 다음과 같습니다.
* 보호소에 가장 먼저 들어온 동물의 '이름'을 조회
이를 해결하기 위해선 데이터의 정렬 과정과 함께 한개의 행에 대한 조회가 필요합니다.
문제 해결을 위해 필요한 SQL문에 대해 정리해보겠습니다.
1. 전체 데이터를 DATETIME 기준으로 정렬하는 과정 2. DATETIME 기준으로 정렬된 데이터에서 첫번째 행을 추출 3. 처음 추출된 행에 대해 동물의 이름을 조회
이러한 요구사항에 맞추어 조합하여 주어진 문제에 대한 SQL문을 작성해보겠습니다.
기존에 문제를 접근하던 방식과 다르게 이번엔 FROM 문을 비워두도록 하겠습니다.
가장 먼저 조회가 필요한 이름 컬럼에 대해 SELECT 문을 작성합니다.
SELECT NAME FROM 비워두기;
다음으로 어느 데이터에서 이름을 가져올 것인지 정의해주어야합니다.
이는 동물 보호 테이블을 DATETIME을 기준으로 오름차순 정렬한 테이블을 의미합니다.
SELECT NAME FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME ASC); SELECT * FROM (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME ASC); -> 위 두가지 방식으로 모두 기술 가능합니다.
마지막으로 하나의 행 데이터를 불러올 수 있도록 WHERE 문의 조건을 설정합니다.
SELECT * FROM (SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME ASC) WHERE ROWNUM=1;
복잡했지만 차근차근 탐색해가며, 정렬과 조건이 섞인 문제를 해결할 수 있었습니다.
FROM 문에서 정렬된 데이터를 불러와 사용하는 방식은 처음 활용해보았습니다.
문제를 해결하는 과정에서 단순 풀이는 맞았지만, 최적의 방법인지 알 수 없습니다.
다른 사람들의 코드를 읽고 배워가며, 최적화된 코드를 작성할 수 있도록 노력하겠습니다.
긴 글 읽어주셔서 감사합니다.