Jak mogę uzyskać AVG
kolumny ignorującej NULL
i wartości zerowych?Otrzymuj AVG ignorując wartości Null lub Zero
mam trzy kolumny, aby uzyskać ich średnią, staram się wykorzystać następujący skrypt:
SELECT distinct
AVG(cast(ISNULL(a.SecurityW,0) as bigint)) as Average1
,AVG(cast(ISNULL(a.TransferW,0) as bigint)) as Average2
,AVG(cast(ISNULL(a.StaffW,0) as bigint)) as Average3
FROM Table1 a, Table2 b
WHERE a.SecurityW <> 0 AND a.SecurityW IS NOT NULL
AND a.TransferW<> 0 AND a.TransferWIS NOT NULL
AND a.StaffW<> 0 AND a.StaffWIS NOT NULL
AND MONTH(a.ActualTime) = 4
AND YEAR(a.ActualTime) = 2013
nie dostać żadnych wyników, jednak trzy kolumny mają wartości NULL i tym zerami!
Czy mimo to można wykluczyć wartości puste przed uzyskaniem średniej?
przykład: AVERAGE(NOTNULL(SecurityW))
Wszystkie te 'AND's oznacza, że dostaniesz tylko wiersze, które mają wartości non-NULL we wszystkich 3 kolumn. Ponadto, twoje sprawdzenia "NOT NULL" nie są wymagane, ponieważ 'Column <> 0' ma wartość' UNKNOWN', jeśli 'Column' ma wartość' NULL'. –