sql >> Database teknologi >  >> RDS >> Mysql

Sum rækker fra forskellige forhold i Mysql

Du kan tilføje en WITH ROLLUP klausul til din GROUP BY tilstand som denne:

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

Dette ville give et resultatsæt som:

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

Du skal forstå den adfærd, at der ikke ville være nogen Total værdi i kolonnen Status. I stedet vil statuskolonnen have en NULL-værdi, der angiver, at det er her, sammenlægningen foretages.

For mere information kan du læse dokumentationen her:http ://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html



  1. Gruppér efter dag fra tidsstempel

  2. Vigtigheden af ​​vedligeholdelse på MSDB

  3. Henvis til et kolonnenavn-alias i WHERE-sætningen

  4. Hvordan kan jeg få det autoinkrementerede id, når jeg indsætter en post i en tabel via jdbctemplate