sql >> Databasteknik >  >> RDS >> Mysql

Summa rader från olika förhållanden i Mysql

Du kan lägga till en WITH ROLLUP sats till din GROUP BY skick så här:

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

Detta skulle ge en resultatuppsättning som:

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

Du skulle behöva förstå beteendet att det inte skulle finnas någon Total värde i kolumnen Status. Istället skulle statuskolumnen ha ett NULL-värde som indikerar att det är här sammanställningen görs.

För mer information kan du läsa dokumentationen här:http ://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html



  1. Kontrollera för maximal längd av på varandra följande dagar som uppfyller specifika villkor

  2. Hur upprepar jag ett resurs-id #6 från ett MySql-svar i PHP?

  3. Hur skriver man ut lagrade procedurer till filer?

  4. Hur sjukvården använder databaser