Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Group by - Dapatkan kolom dengan hitungan nol

COUNT hanya mengembalikan COUNT untuk status yang dia temukan untuk Microsoft. Dan itu Ditolak dan Ditarik. Anda harus memberi makan kueri semua status dan COUNT kemunculan semuanya. Yang tidak muncul di tabel akan dibiarkan dengan 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;

Apa yang dilakukannya adalah:

SELECT DISTINCT STATUS
FROM tab1

Ini menemukan semua status yang mungkin. Jika Anda memiliki tabel referensi dengan semua kemungkinan status, lebih baik Gunakan itu daripada kueri ini.

Kemudian Anda melakukan LEFT JOIN pada tabel ini berdasarkan status dan companyName. Dengan cara ini, Anda hanya akan mendapatkan kecocokan di STATUS jika ada catatan di atas meja. Jika ada, tambahkan 1 ke SUM, jika tidak, tambahkan 0.

demo 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. html berukuran tiga kali lipat dengan mengembalikan tag kosong setelah kueri mysql | cara mengatasi - laravel

  2. Bagaimana cara mengubah kueri MSSQL CTE ke MySQL?

  3. Beralih dari MySQL ke Cassandra - Pro/Kontra?

  4. SQL antara tanggal termasuk tanggal mulai dan berakhir

  5. Pilih jumlah / duplikat