2023. 11. 21. 03:23, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/131528
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL
or
SELECT SUM(AGE IS NULL) AS USERS
FROM USER_INFO
처음에,
SELECT COUNT(AGE) AS USERS
FROM USER_INFO
WHERE AGE IS NULL
라고 작성했는데, 이렇게 작성하면 0개가 나온다.
COUNT() 를 사용해보면, NULL 인 경우는 제외하고 행의 갯수를 세준다
그런데 WHERE에서 이미 NULL 인 경우들은 제외를 해버렸기 때문에 그렇다면 AGE가 NULL 인 경우들만 남고,
거기서 COUNT(AGE) 를 시행하면 NULL 인 경우들은 제외하고 숫자를 세기 때문에 그 경우 0개가 나온다.
COUNT() 를 할때 NULL을 제외하고 카운트를 해준다는걸 주의하도록 하자.
*참고*
`COUNT(AGE)`는 AGE 열이 NULL이 아닌 행의 수를 세는 것입니다. 따라서 `NULL`인 행은 `COUNT`에 영향을 미치지 않고 무시됩니다.
이런 동작이 발생하는 이유는 `COUNT` 함수가 NULL이 아닌 값을 가진 행만을 계산하기 때문입니다. `COUNT` 함수는 특정 열의 NULL 값을 세지 않습니다. 즉, `COUNT(AGE)`는 AGE 열이 NULL이 아닌 행만을 고려하고, NULL인 행은 무시합니다.
따라서 `ORDER BY USER_ID`와는 별개로 AGE가 NULL이 아닌 행의 수만을 반환하게 됩니다. `ORDER BY`는 결과를 정렬하는데만 영향을 미치고, `COUNT` 함수는 그룹화나 정렬과는 무관하게 독립적으로 각 행의 개수를 세는 역할을 합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV 4. 157339 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 MySQL (0) | 2023.11.22 |
---|---|
프로그래머스 LV 4. 133027 주문량이 많은 아이스크림들 조회하기 MySQL (0) | 2023.11.21 |
프로그래머스 LV 2. 59410 NULL 처리하기 MySQL (0) | 2023.11.21 |
프로그래머스 LV 1. 59407 이름이 있는 동물의 아이디 MySQL (0) | 2023.11.21 |
프로그래머스 LV 1. 59039 이름이 없는 동물의 아이디 MySQL (0) | 2023.11.21 |
Comments, Trackbacks