sql >> Databáze >  >> RDS >> Mysql

Součet řádků z různých podmínek v Mysql

Můžete přidat WITH ROLLUP klauzule do vaší GROUP BY tento stav:

SELECT
  CASE WHEN CONDITION=1 THEN 'OK' ELSE 'BAD' END AS Status,
  SUM (CASE WHEN SIZE=10 THEN 1 ELSE 0 END) AS Small,
  SUM (CASE WHEN SIZE=20 THEN 1 ELSE 0 END) AS Medium,
  SUM (CASE WHEN SIZE=30 THEN 1 ELSE 0 END) AS Large,
FROM mytable
GROUP BY Status WITH ROLLUP

Výsledkem by byla sada výsledků jako:

Status    Small    Medium    Large
OK         1         2         1
BAD        2         1         0
[NULL]     3         3         1 

Musíte pochopit chování, že by neexistoval žádný Total hodnotu ve sloupci Stav. Místo toho by sloupec Stav měl hodnotu NULL, která označuje, že se jedná o místo, kde došlo ke kumulaci.

Pro více informací si můžete přečíst dokumentaci zde:http ://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html



  1. MariaDB VERSION() Vysvětleno

  2. Musím použít mysql_real_escape_string, když vážím parametry?

  3. Jak vypsat všechny tabulky v Oracle

  4. Výběr prvního řádku na skupinu