sql >> Databasteknik >  >> RDS >> Sqlserver

Få AVG att ignorera noll- eller nollvärden

NULL ignoreras redan så du kan använda NULLIF för att vända 0 till NULL . Du behöver inte heller DISTINCT och din WHEREActualTime är inte sargbar.

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 Jag har ingen aning om vad Table2 b finns i den ursprungliga frågan eftersom det inte finns något kopplingsvillkor för det så har utelämnat det från mitt svar.



  1. Hur kan jag uppdatera/öppna en SQLite-databas efter att ha återställt den, när jag använder en singleton för databashjälpen

  2. JSON_QUERY() Exempel i SQL Server (T-SQL)

  3. Uppdatering av Oracle Table från Excel VBA Macro med ODBC-anslutning

  4. Topptrender inom databashantering