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

Jumlah, Rata-Rata, Maks, Min, Hitungan nilai NULL

Ini adalah pertanyaan yang bagus, dan pertanyaan yang tidak memiliki jawaban yang bagus. Perawatan NULL dalam dua contoh Anda berbeda.

Masalah mendasar adalah apa NULL cara. Biasanya, ini digunakan untuk menunjukkan hilang nilai-nilai. Namun, dalam standar ANSI, ini adalah singkatan dari tidak diketahui nilai. Saya yakin para filsuf dapat mencurahkan buku-buku tebal untuk membedakan antara "hilang" dan "tidak diketahui".

Dalam ekspresi sederhana (boolean atau aritmatika atau skalar dari jenis lain), ANSI mendefinisikan hasil "tidak diketahui" di hampir semua kasus di mana salah satu operan "tidak diketahui". Ada beberapa pengecualian:NULL AND FALSE salah dan NULL IS NULL benar, tapi ini jarang terjadi.

Untuk operasi agregasi, pikirkan SUM() sebagai "jumlahkan semua nilai yang diketahui", dan seterusnya. SUM() memperlakukan NULL nilai yang berbeda dari + . Namun, perilaku ini juga standar, jadi begitulah cara kerja semua basis data.

Jika Anda menginginkan NULL nilai untuk agregasi ketika apa saja operandnya adalah NULL , maka Anda perlu menggunakan CASE . Saya pikir cara termudah untuk satu kolom adalah:

(CASE WHEN COUNT(col) = COUNT(*) THEN SUM(COL) END)


  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 dari tabel yang sama sebagai Sisipan atau Perbarui

  2. sql query untuk memilih record yang memiliki id yang sama tetapi nilai yang berbeda dalam dua kolom

  3. Bagaimana saya bisa mengatasi kesalahan baris ini di MySQL Workbench?

  4. Konversi SQL ke SQL alkimia

  5. Mysql Pilih beberapa baris acak dan ditambah satu baris tertentu