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

MySQL - JUMLAH Bersyarat dengan GROUP BY

Jika droid_v hanya bisa 0, 1, 2, 3, atau 4, maka COUNT(DISTINCT) tidak akan pernah mengembalikan lebih dari 5, karena hanya ada lima kemungkinan nilai. Apakah itu yang Anda inginkan? Jika demikian, coba ini:

SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v ELSE 0 END) - 1 AS droid /* -1 for the case where droid_v is 0 */
     , COUNT(DISTINCT sig_v) AS sig
     , SUM(NoExt)  AS hits

Pembaruan: Ups, maaf, yang di atas kurang tepat karena mungkin tidak ada ada nol. Seharusnya:

SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END) AS droid

Sebaliknya, jika Anda ingin menghitung semua baris di mana droid_v> 0, maka saya rasa Anda menginginkan ini:

SELECT puid, SUM(CASE WHEN droid_v > 0 THEN 1 ELSE 0 END) AS droid
     , COUNT(DISTINCT sig_v) AS sig
     , SUM(NoExt)  AS hits

Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PILIH id MEMILIKI jumlah maksimum id

  2. Bagaimana cara menghapus semua karakter numerik non-alfa dari string di MySQL?

  3. PHP:Jika record ada, tampilkan HTML, yang lain tidak menampilkan apa-apa

  4. Pilih kolom dengan nama kata kunci

  5. Pemicu sebelum menghapus MySql