SQL 집계 함수를 사용할 때 NULL 항목이 포함됩니다.
조회수 575회
INSERT INTO customers (customer_id, customer_name, age, ranking, job, savings)
VALUES ('apple', '홍길동', 20, 'gold', '학생', 1000),
('banana', '김철수', 25, 'vip', '간호사', 2500),
('carrot', '박영희', 28, 'gold', '교사', 4500),
('orange', '최용욱', 22, 'silver', '학생', 0),
('melon', '성원용', 35, 'gold', '회사원', 5000),
('peach', '오형준', NULL, 'silver', '의사', 300),
('pear', '채광주', 31, 'silver', '회사원', 500);
어떤 데이터베이스에 이러한 테이블을 생성했습니다. 보시다시피 customer_id
컬럼의 값이 'peach'인 튜플의 age
컬럼 값은 NULL입니다.
여기서 모든 튜플의 age
값의 총계를 구하려고 다음과 같은 SQL문을 입력했는데요.
SELECT COALESCE(SUM(age), 0) FROM customers;
> 185
20+25+28+22+35+31=161이 되어야 하는데, 알 수 없는 값 24가 추가되어 185가 출력되었습니다.
NULL 값이 있으면 0으로 치환하도록 COALESCE()
함수도 추가했는데 이런 결과가 나오네요. 어떻게 해야 정상적인 합을 구할 수 있을지 궁금합니다...
사용 중인 DBMS는 MariaDB입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
https://www.techonthenet.com/sql_server/is_not_null.php
where 문에 IS NOT NULL 를 추가 해 주시면, NULL인 값은 애초에 가져오지 않습니다.
- 어라...`WHERE age IS NOT NULL`을 추가했는데도 값이 185가 나오네요;; 아무래도 제 PC에 설치된 DBMS가 문제인 것 같습니다. 위에 정명훈님이 댓글로 달아주신 SQLfiddle 사이트에서는 161이 나옵니다. 알 수 없는 사용자 2019.4.24 00:11
댓글 입력