SQL में कुल कार्य (SUM, AVG, COUNT, आदि) हमेशा स्वचालित रूप से NULL को बाहर कर देते हैं।
तो SUM(col) / COUNT(col) =AVG(col) - यह बढ़िया और सुसंगत है।
COUNT(*) का विशेष मामला प्रत्येक पंक्ति की गणना करता है।
यदि आप NULLs के साथ एक एक्सप्रेशन बनाते हैं:A + B जहां या तो A या B NULL है, तो A + B NULL होगा, भले ही अन्य कॉलम NULL हो।
जब एनयूएलएल होते हैं, सामान्य रूप से, एवीजी (ए + बी) <> एवीजी (ए) + एवीजी (बी), और उनके पास अलग-अलग भाजक भी होंगे। आपको कॉलम को लपेटना होगा:AVG(COALESCE(A, 0) + COALESCE(B, 0)) इसे हल करने के लिए, लेकिन शायद उस मामले को भी बाहर कर दें जहां COALESCE(A, 0) + COALESCE(B, 0).पी>
आपके कोड के आधार पर, मैं सुझाव दूंगा:
select avg(coalesce(col1, 0) + coalesce(col2, 0)), count(col3) from table1
where coalesce(col1, col2) is not null -- double nulls are eliminated
group by SomeArbitraryCol
having avg(coalesce(col1, 0) + coalesce(col2, 0)) < 500 and count(col3) > 3
order by avg(coalesce(col1, 0) + coalesce(col2, 0)) asc;