이번에 다뤄볼 문제는 다중 조건을 활용하여 데이터를 조회하는 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/59404
프로그래머스 기준 Lv.1 문제이며, 풀이 후 해설과 함께 정리해보도록 하겠습니다.

문제에서 주어진 요구사항은 다음 2가지입니다.
1. 테이블에 존재하는 모든 동물의 '아이디', '이름', '보호 시작일'을 조회 2. 이 때, '이름'순으로 조회하여 데이터를 출력 3. 만약 '이름'이 중복되어있는 경우, '보호 시작일'을 기준으로 조회하여 데이터를 출력
지문에서 요구하는 사항을 모두 만족시키기 위해 항상 지문을 잘 읽어야 합니다.
이 때, 우리는 위 질문에서 요구하는 답변을 내놓기 위한 함수를 떠올려야 합니다.
이번 문제를 해결하기 위해선 2개의 조건을 엮어서 작성할 수 있는 방법을 탐색해야합니다.
문제 해결을 위해 필요한 SQL문에 대해 조금 더 정리해보겠습니다.
1. SELECT 문을 통해 조회하고자 하는 컬럼에 대한 정리 필요 (아이디, 이름, 보호시작일) 2. 가장 먼저 '이름'을 기준으로 정렬을 수행할 수 있는 SQL문이 필요 3. '이름'이 중복된 경우, '보호시작일'을 기준으로 정렬을 수행할 수 있는 SQL문이 필요 4. 이를 종합해보면, '이름'과 '보호시작일'을 함께 고려한 다중 정렬 조건이 필요
필요한 함수는 모두 정의되었으니, 이를 순서에 맞게 조합하여 SQL문을 작성해보겠습니다.
가장 먼저 SELECT~FROM 사이를 비워둔 상태로 조회하고자 하는 테이블에 대해 작성합니다.
SELECT '비워두기' FROM ANIMAL_INS;
다음으로 실제 조회하여 확인하고자 하는 대상 컬럼을 SELECT 다음 작성해주겠습니다.
조회가 필요한 컬럼은 아이디(ANIMAL_ID), 이름(NAME), 보호시작일(DATETIME)입니다.
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS;
이후 다중 정렬 조건 중 '이름'에 대한 정렬 조건을 먼저 작성해주겠습니다.
정렬 함수론 ASC, DESC가 있으며 각각 오름차순과 내림차순이란 뜻을 갖고 있습니다.
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC;
마지막으로 이름이 중복된 경우를 위해 '보호시작일'을 기준으로 한 정렬 조건을 작성합니다.
ORDER BY를 통한 다중 정렬 조건을 작성할 땐, 쉼표(,)를 기준으로 작성할 수 있습니다.
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC;
이렇게 어려워보였던 SQL NULL 조회 문제에 대한 SQL문을 작성하고 해결할 수 있었습니다.
이렇게 처음 만나보는 다중 정렬 조건에 대해 문제를 해결해가며 배워볼 수 있었습니다.
아직은 모르는 함수가 많아 해결이 어렵지만 느리더라도 꾸준히 배워보도록 하겠습니다.
긴 글 읽어주셔서 감사합니다.