Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan AVG mengabaikan nilai Null atau Zero

NULL sudah diabaikan sehingga Anda dapat menggunakan NULLIF untuk mengubah 0 ke NULL . Anda juga tidak perlu DISTINCT dan WHERE . Anda pada ActualTime tidak sargable.

SELECT AVG(cast(NULLIF(a.SecurityW, 0) AS BIGINT)) AS Average1,
       AVG(cast(NULLIF(a.TransferW, 0) AS BIGINT)) AS Average2,
       AVG(cast(NULLIF(a.StaffW, 0) AS BIGINT))    AS Average3
FROM   Table1 a
WHERE  a.ActualTime >= '20130401'
       AND a.ActualTime < '20130501' 

PS Saya tidak tahu apa Table2 b ada dalam kueri asli karena tidak ada kondisi bergabung untuk itu, jadi hilangkan dari jawaban saya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengonversi hasil Pilih menjadi skrip Sisipkan - SQL Server

  2. Ekspor data dari SQL Server ke Excel dan file Teks menggunakan paket SSIS

  3. Jelajahi Penyebab, &Solusi Korupsi Database SQL Server

  4. 2 Cara Mengembalikan Daftar Server Tertaut di SQL Server menggunakan T-SQL

  5. SQL Server bernama instance dengan proyek Penginstal Visual Studio 2017