Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Soma linhas de diferentes condições no Mysql


Você pode adicionar um WITH ROLLUP cláusula para o seu GROUP BY condição assim:
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

Isso produziria um conjunto de resultados como:
Status    Small    Medium    Large
OK         1         2         1
BAD        2         1         0
[NULL]     3         3         1 

Você precisaria entender o comportamento de que não haveria nenhum Total valor na coluna Status. Em vez disso, a coluna Status teria um valor NULL indicando que é aqui que o rollup é feito.

Para obter mais informações, você pode ler a documentação aqui:http ://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html