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

문제에서 주어진 요구사항은 다음 2가지입니다.
1. 이름(NAME)이 NULL이 아닌 동물의 ID(ANIMAL_ID)를 조회해야 함 2. 이 때, 데이터의 출력은 ID(ANIMAL_ID)를 기준으로 오름차순(ASCENDING)으로 표현
간단한 문제임에도 디테일한 요구 사항이 들어오기 때문에, 지문을 잘 읽어야 합니다.
이 때, 우리는 위 질문에서 요구하는 답변을 내놓기 위한 함수를 떠올려야 합니다.
해당 함수는 데이터 내 NULL 조건을 활용해야 하고, 정렬 후 반환할 수 있어야 합니다.
문제 해결을 위해 필요한 SQL문에 대해 조금 더 정리해보겠습니다.
1. SQL 내 NULL 여부 확인을 위핸 IS NULL 혹은 IS NOT NULL이 필요 2. NULL 조건을 통해 특정 조건의 행을 조회하기 위한 WHERE이 필요 3. 조회된 동물의 NAME을 ID 기준으로 정렬해주기 위한 ASC 혹은 DESC 4. ASC, DESC 적용을 위한 ORDER BY 'COLUMN' ASC, ORDER BY 'COLUMN' DESC
필요한 함수는 모두 정의되었으니, 이를 순서에 맞게 조합하여 SQL문을 작성해보겠습니다.
가장 먼저 SELECT~FROM 사이를 비워둔 상태로 조회하고자 하는 테이블에 대해 작성합니다.
SELECT '비워두기' FROM ANIMAL_INS;
이후 ANIMAL_INS 테이블의 컬럼을 통해 조건 조회를 수행하는 WHERE 조건을 작성합니다.
WHERE 문은 어떠한 조건과 함께 쓰여야 하기 때문에, NULL 여부 조건과 함께 작성합니다.
SELECT '비워두기' FROM ANIMAL_INS WHERE NAME IS NOT NULL;
다음으로 WHERE 문의 조건을 통해 확인하고자 하는 대상을 SELECT 다음 작성해주겠습니다.
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL;
마지막으로 전체 조회 대상에 대한 정렬 조건을 작성해주겠습니다.
정렬 함수론 ASC, DESC가 있으며 각각 오름차순과 내림차순이란 뜻을 갖고 있습니다.
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY '비워두기' ASC;
마지막으로 ANIMAL_ID를 기준으로 정렬을 요구하기 때문에 ANIMAL_ID를 넣어줍니다.
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC;
이렇게 어려워보였던 SQL NULL 조회 문제에 대한 SQL문을 작성하고 해결할 수 있었습니다.
해당 문제를 접하고 처음 문제를 풀땐 굉장히 어려웠습니다.
NULL, ORDER BY 함수 자체도 몰랐고, SQL 작성 순서 또한 너무 헷갈렸기 때문입니다.
하지만 함수를 찾고, 문제를 해결하고, 이를 정리하는 과정에서 많이 배우게 되었습니다.
하나하나 차근차근 풀어가며 조금씩 실력을 늘려갈 수 있도록 노력하겠습니다.
긴 글 읽어주셔서 감사합니다.