Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie Oracle SQL do podsumowania statystyk przy użyciu funkcji 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;

Jest to często nazywane zapytaniem „pivot” i napisałem artykuł o tym, jak dynamicznie generować te zapytania na moim blogu .

Wersja używająca DECODE (specyficzne dla Oracle, ale mniej gadatliwe):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd (2,7):PLS-00428:oczekiwana jest klauzula INTO w tej instrukcji SELECT

  2. Jak stworzyć i używać listy wielokrotnego wyboru w APEX ORACLE?

  3. Przestrzeń nazw System.Data.OracleClient została wycofana?

  4. Jak mogę zwrócić wiele identycznych wierszy na podstawie pola ilości w samym wierszu?

  5. Jak wybrać 200 rekordów dla każdej iteracji 'for loop' w Oracle?