sql >> Base de Datos >  >> RDS >> Mysql

Suma filas de diferentes condiciones en Mysql

Puede agregar un WITH ROLLUP cláusula a su GROUP BY condición como esta:

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

Esto produciría un conjunto de resultados como:

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

Debería comprender el comportamiento de que no habría ningún Total valor en la columna Estado. En cambio, la columna Estado tendría un valor NULL que indica que aquí es donde se realiza el resumen.

Para más información puede leer la documentación aquí:http ://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html