sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL Query för att sammanfatta statistik, med hjälp av GROUP BY

select batch 
,      count(case when status=1 then 1 end) status1
,      count(case when status=2 then 1 end) status2
,      count(case when status=3 then 1 end) status3
from   table
group by batch;

Detta kallas ofta en "pivot"-fråga, och jag har skrivit en artikel om hur man genererar dessa frågor dynamiskt på min blogg .

Version med DECODE (Oracle-specifik men mindre utförlig):

select batch 
,      count(decode(status,1,1)) status1
,      count(decode(status,2,1)) status2
,      count(decode(status,3,1)) status3
from   table
group by batch;


  1. Hur duplicerar man en tabell med nycklar och andra strukturfunktioner som finns kvar i MySQL?

  2. exekvera omedelbart utan att visa poster av Dynamic Select-satsen

  3. det går inte att visa frågeresultat i en vykodantändare

  4. Hamming avstånd på binära strängar i SQL