sql >> Databáze >  >> RDS >> Oracle

Oracle SQL Query pro shrnutí statistik pomocí 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;

Toto se často nazývá „pivotní“ dotaz a napsal jsem článek o tom, jak tyto dotazy dynamicky generovat na mém blogu .

Verze používající DECODE (specifická pro Oracle, ale méně podrobná):

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. Výchozí hodnota EF6 Oracle pro sloupec při první migraci kódu

  2. nalezení MAX(db_timestamp) dotazu

  3. ORA-01855:AM/A.M. nebo PM/P.M. Požadované

  4. Jak vrátit hodnoty výsledků dotazu vložení pomocí pomocníků pg-promise