Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да накарам функцията SUM в MySQL да върне '0', ако не бъдат намерени стойности?

Използвайте COALESCE за да избегнете този резултат.

ИЗБЕРЕТЕ КОАЛЕСЦИЯ(SUM(колона),0)ОТ таблицаWHERE ... 

За да го видите в действие, моля, вижте тази sql цигулка:http://www .sqlfiddle.com/#!2/d1542/3/0

Повече информация:

Дадени са три таблици (една с всички числа, една с всички нули и една със смес):

SQL Fiddle

Настройка на схемата на MySQL 5.5.32 :

СЪЗДАВАНЕ НА ТАБЛИЦА 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) СТОЙНОСТИ(1),(2),(3),(4),(5),(6);СЪЗДАВАНЕ НА ТАБЛИЦА baz( id INT NOT NULL AUTO_INCREMENT ПРАВИЛЕН КЛЮЧ, val INT);INSERT INTO baz (val) VALUES(null),(null),(null),(null),(null),(null); 

Запитване 1 :

ИЗБЕРЕТЕ 'foo' като table_name, 'mixed null/non-null' като описание, 21 като очаквана_сума, COALESCE(SUM(val), 0) като действителен_sumFROM fooUNION ALLSELECT 'bar' като table_name, 'all non -null' като описание, 21 като очаквана_сума, COALESCE(SUM(val), 0) като действителна_сумаFROM barUNION ALLSELECT 'baz' като име_на таблица, 'all null' като описание, 0 като очаквана_сума, COALESCE(SUM(val), 0) като действителна_сумаFROM база 

Резултати :

<предварителен код>| TABLE_NAME | ОПИСАНИЕ | EXPECTED_SUM | АКТУАЛНА_СУМА ||------------|---------------------|------------ --|------------|| foo | смесено нула/не-нула | 21 | 21 || бар | всички ненулеви | 21 | 21 || база | всички нула | 0 | 0 |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. #1242 - Подзаявката връща повече от 1 ред - mysql

  2. asp.net / MySQL:Достъпът е отказан за потребител ''@'localhost' (използвайки парола:НЕ)

  3. MySQL:Как да търсите в множество таблици низ, съществуващ във всяка колона

  4. Извличане на подниз на MySQL с помощта на разделител

  5. Направете sql изгледа редактируем