이번에 프로그래머스 mysql lv.1 나이 정보가 없는 회원 수 구하기를 풀면서 모르는 것이 나와서 정리하려고 한다.
문제는
"USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요."
아래와 같다.
나는 당연히 count()를 통해서 풀면 된다고 생각을 했다.
하지만 당연하게도 틀렸고, 내가 모르던 부분이 있어서 정리를 하려고 한다.
count()는 집계 함수로써, SQL문을 사용할 때에 특정 column이 몇 개 존재하는지 구할 때 사용을 한다.
ex) SELECT COUNT(EXAMPLE_COLUMN) AS TOTAL FROM EXAMPLE;
위와 같이 사용을 한다.
하지만 내가 놓쳤던 부분은 이 count()는 NULL인 ROW를 제외하고 값을 구한다.
만약 NULL의 개수도 같이 구하고 싶다면 특정한 column을 작성하는 것이 아닌 *을 사용하면 NULL을 포함한 개수를 반환한다.
두 가지는 WHERE 뒤에서 NULL을 판단할 때 사용을 한다.
특정 값이 NULL이면 TRUE를 반환한다.
ex) SELECT COUNT(EXAMPLE_COLUMN) AS TOTAL FROM EXAMPLE WHERE EXAMPLE_COLUMN IS NULL
사용법은 위와 같다.
특정 값이 NULL이 아니면 TRUE를 반환한다.
ex) SELECT COUNT(EXAMPLE_COLUMN) AS TOTAL FROM EXAMPLE WHERE EXAMPLE_COLUMN IS NOT NULL
사용법은 위와 같다.
반드시 까먹지 말아야겠다.