'평균' 어떻게 'NULL' 무시하고, 제로 내려받습니다 열의 값을?
나는 평균 3 열 수 있게 해, 난 다음 스크립트입니다 사용하려고 합니다.
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
어쨌든 null 값을 얻기 전에 평균 제외하려면 있나요?
예: '평균 (노뉴얼 (세커티스)'
'NULL' 이미 '' 을 '0' 을 사용할 수 있도록 무시됨 누이프 선반가공 'NULL'. 또한 서로 다른 '와' 네 ',' t need don& # 39 곳 '에' 이스투아르타임 사르게이블 않습니다.
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 난 아무 생각이 없기 때문에 뭐라구오 Table2 b '는 최초의 쿼리합니다 참가하십시오 그렇게 조건을 생략할 %s/dbase/ext_table. it from my 대답.
협력했습니다 가져다줄래요 :
AVG(CASE WHEN SecurityW <> 0 THEN SecurityW ELSE NULL END)
넌 이미 시도 'NOT NULL 값을 필터링하도록' NULL '와'. 나는 이 조항 때문에 'IS NOT NULL' 를 '어디서' 변경일 시행할 예정이다. 우리가 할 수 있는 '평균' 이 '' 기능을 제거하여 리팩터링 이누얼 메서드입니다. 또한, I 'll you& # 39, 정작 필요한 의심할 수 있도록 분리하십시오 bigint' "라고 언급했다.
SELECT distinct
AVG(a.SecurityW) as Average1
,AVG(a.TransferW) as Average2
,AVG(a.StaffW) as Average3
FROM Table1 a, Table2 b
WHERE a.SecurityW <> 0 AND a.SecurityW IS NOT NULL
AND a.TransferW<> 0 AND a.TransferWIS IS NOT NULL
AND a.StaffW<> 0 AND a.StaffWIS IS NOT NULL
AND MONTH(a.ActualTime) = 4
AND YEAR(a.ActualTime) = 2013