[mysql/oracle] 나이 정보가 없는 회원 수 구하기
2023. 1. 27. 02:45ㆍProgrammers/SQL
문제
결과
mysql
1
2
|
select sum(age is null) users
from user_info
|
cs |
age가 null이라면 true라서 0을 반환 / null이 아니라면 false라서 1을 반환
oracle
1) decode
1
2
|
SELECT count(decode(age, null, 0)) users
from user_info
|
cs |
200개의 row를 decode로 돌리면 200개 중 decode의 조건식에 해당되는 row들만 출력대상이고 조건식에 해당되지 않으면 출력되지 않는다. -> 200개 이하의 row가 출력된다.
그러므로 age가 null인 것들만 count하고 null이 아닌 값들은 출력 대상에서 제외되므로 count 되지 않는다.
2) nvl - 틀린 이유
1
2
|
SELECT count(nvl(age, 0)) users
from user_info
|
cs |
200개의 row를 nvl로 돌리면 모든 row를 대상으로 null인 경우 아닌 경우를 나눠서 null인 경우에 지정된 값을 주기 때문에
모든 row가 출력대상이다. -> 200개가 출력된다.
age가 null이면 0이고 아니면 원래 값을 출력한다.
'Programmers > SQL' 카테고리의 다른 글
[mysql/oracle] 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2023.01.28 |
---|---|
[mysql/oracle] 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.01.28 |
[mysql/oracle] NULL 처리하기 (0) | 2023.01.27 |
[mysql/oracle]이름이 있는 동물의 아이디 (0) | 2023.01.26 |
[mysql/oracle]경기도에 위치한 식품창고 목록 출력하기 (0) | 2023.01.20 |