Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Group by - Pobierz kolumny z zerową liczbą

COUNT zwraca tylko COUNT dla stanu, który znajduje dla firmy Microsoft. A te są odrzucone i wycofane. Musisz podać w zapytaniu wszystkie statusy i POLICZĆ wystąpienia wszystkich z nich. Te, które nie pojawiają się, zostaną w tabeli pozostawione z 0:

SELECT a.STATUS, SUM(CASE WHEN b.STATUS IS NOT NULL THEN 1 ELSE 0 END) AS StatusCount FROM ( SELECT DISTINCT STATUS FROM tab1 ) a LEFT JOIN tab1 b ON a.STATUS = b.STATUS AND b.CompanyName = 'Microsoft' GROUP BY a.STATUS;

To, co to robi, to:

SELECT DISTINCT STATUS
FROM tab1
 

Znajduje to wszystkie możliwe statusy. Jeśli masz tabelę referencyjną ze wszystkimi możliwymi statusami, jeszcze lepiej Użyj jej zamiast tego zapytania.

Następnie wykonujesz LEFT JOIN w tej tabeli według statusu i nazwy firmy. W ten sposób otrzymasz dopasowanie w STATUSIE tylko wtedy, gdy na stole znajduje się rekord. Jeśli tak, dodajesz 1 do SUMA, w przeciwnym razie dodajesz 0.

demonstracja sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. połącz mysql z javą za pomocą eclipse

  2. javax.naming.NoInitialContextException z mysql DataSource

  3. Składnia parametrów wejściowych w zapytaniu MySQL

  4. Wybór dostępnych przedziałów czasowych na konkretną datę

  5. Zabezpieczanie instalacji MySQL