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

MySQL:rata-rata dengan nol

Fungsi agregat (SUM, AVG, COUNT, dll) dalam SQL selalu secara otomatis mengecualikan NULL.

Jadi SUM(col) / COUNT(col) =AVG(col) - ini bagus dan konsisten.

Kasus khusus COUNT(*) menghitung setiap baris.

Jika Anda membuat ekspresi dengan NULL:A + B di mana A atau B adalah NULL, maka A + B akan menjadi NULL terlepas dari kolom lainnya adalah NULL.

Jika ada NULL, secara umum, AVG(A + B) <> AVG(A) + AVG(B), dan kemungkinan penyebutnya juga berbeda. Anda harus membungkus kolom:AVG(COALESCE(A, 0) + COALESCE(B, 0)) untuk menyelesaikannya, tetapi mungkin juga mengecualikan kasus di mana COALESCE(A, 0) + COALESCE(B, 0).

Berdasarkan kode Anda, saya akan menyarankan:

select avg(coalesce(col1, 0) + coalesce(col2, 0)), count(col3) from table1
where coalesce(col1, col2) is not null -- double nulls are eliminated
group by SomeArbitraryCol
having avg(coalesce(col1, 0) + coalesce(col2, 0)) < 500 and count(col3) > 3
order by avg(coalesce(col1, 0) + coalesce(col2, 0)) asc;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan indeks di tabel MySQL

  2. Memilih catatan Max dan Min dalam satu perintah MySQL

  3. Bagaimana cara mengubah html menjadi pdf dengan php?

  4. Dapatkan ID yang terakhir dihapus di MySQL

  5. COUNT dalam kueri dengan beberapa GABUNG dan GROUP BY CLAUSE