sql >> Database >  >> RDS >> Mysql

Hoe krijg ik de SUM-functie in MySQL om '0' te retourneren als er geen waarden worden gevonden?

Gebruik COALESCE om die uitkomst te vermijden.

SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...

Bekijk deze sql-viool om het in actie te zien:http://www .sqlfiddle.com/#!2/d1542/3/0

Meer informatie:

Gegeven drie tabellen (één met alle getallen, één met alle nullen en één met een mengsel):

SQL Fiddle

MySQL 5.5.32 Schema-instellingen :

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);

Query 1 :

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

Resultaten :

| 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 |


  1. Wat is het verschil tussen MySQL, MySQLi en PDO?

  2. Postgresql dwingt een unieke tweerichtingscombinatie van kolommen af

  3. Een SQL Server Monitoring Tool kiezen die aan uw behoeften voldoet

  4. Kan verificatieplug-in 'caching_sha2_password' niet laden