MySQL SUM 함수에서 NULL 값을 처리하는 방법
MySQL에서 SUM 함수는 값이 없을 때 종종 NULL을 반환합니다. 불편하다. 이 문서에서는 COALESCE 함수를 사용하여 값이 없을 때 SUM이 항상 '0'을 반환하도록 하는 방법을 살펴봅니다.
문제:
다음과 같은 쿼리를 고려해보세요.
<code class="sql">SELECT SUM(Column_1) FROM Table WHERE Column_2 = 'Test'</code>
Column_2에 기준을 충족하는 항목이 없으면 함수는 NULL을 반환합니다. 하지만 대신 '0'을 반환하는 것이 더 나을 수도 있습니다.
해결 방법: COALESCE 사용
이 문제를 해결하려면 COALESCE 함수를 사용하세요. COALESCE는 여러 값을 인수로 사용하고 NULL이 아닌 첫 번째 값을 반환합니다. SUM 함수와 함께 사용하면 NULL이 발생할 때 결과가 항상 '0'이 되도록 보장할 수 있습니다.
<code class="sql">SELECT COALESCE(SUM(column),0) FROM table WHERE ...</code>
예:
COALESCE 함수를 보여주기 위한 SQL 바이올린: http://www.sqlfiddle.com/#!2/d1542/3/0
추가 정보:
COALESCE function은 NULL 값을 처리하기 위해 다른 함수와 함께 사용될 수도 있습니다. 다음은 값이 다른 세 개의 테이블을 사용하는 예입니다.
MySQL 5.5.32 스키마 설정:
<code class="sql">CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, val INT ); INSERT INTO foo (val) VALUES (null), (1), (null), (2), (null), (3), (null), (4), (null), (5), (null), (6), (null); CREATE TABLE bar ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, val INT ); INSERT INTO bar (val) VALUES (1), (2), (3), (4), (5), (6); CREATE TABLE baz ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, val INT ); INSERT INTO baz (val) VALUES (null), (null), (null), (null), (null), (null);</code>
쿼리:
<code class="sql">SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz</code>
결과:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | mixed null/non-null | 21 | 21 |
bar | all non-null | 21 | 21 |
baz | all null | 0 | 0 |
위 내용은 MySQL SUM 함수가 NULL을 반환하는 것을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!