본문 바로가기

SQL

프로그래머스 SQL 고득점 Kit - IS NULL 편

Lv1.  경기도에 위치한 식품창고 목록 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131114

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[풀이1 : IFNULL]

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN ,"N")
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "%경기%"
ORDER BY WAREHOUSE_ID

[풀이2 : IF]

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IF(FREEZER_YN IS NULL,"N",FREEZER_YN)
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "%경기%"
ORDER BY WAREHOUSE_ID

 

[풀이3 : CASE WHEN]

SELECT
    WAREHOUSE_ID,
    WAREHOUSE_NAME,
    ADDRESS,
    CASE
        WHEN FREEZER_YN IS NULL THEN "N"
        ELSE FREEZER_YN
    END AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "%경기도%"
ORDER BY WAREHOUSE_ID ASC;

 

Lv1. 이름이 없는 동물의 아이디

https://school.programmers.co.kr/learn/courses/30/lessons/59039

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[풀이]

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL

Lv1. 이름이 있는 동물의 아이디 

https://school.programmers.co.kr/learn/courses/30/lessons/59407

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[풀이]

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID

Lv1. 나이 정보가 없는 회원 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/131528

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[풀이]

SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL

이 문제는 살짝(?) 조심해야 될 점이있다.

COUNT 함수를 사용할 때 *를 사용할 경우 주의해야한다. 

 

COUNT(*) 의 경의 NULL값을 포함하여 계산한다. 

COUNT(AGE) 처럼 컬럼을 지정해줄 경우에는 NULL값을 포함하지 않고 계산한다.

따라서 COUNT(*)를  사용해서 풀었다면 WHERE 절에서 NULL이 아닐 경우를 체크해줘야한다.

 

만약 COUNT(특정 컬럼) 이라면 그대로 쓰면된다.

SELECT COUNT(AGE) AS USERS
FROM USER_INFO

 

Lv2. NULL 처리하기

https://school.programmers.co.kr/learn/courses/30/lessons/59410

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[풀이]

SELECT ANIMAL_TYPE ,IFNULL(NAME,'No name') AS NAME,SEX_UPON_INTAKE
FROM ANIMAL_INS