यदि आप avg()
. के बारे में जानते हैं SQLite में काम करते हैं, आप शायद जानते हैं कि यह सभी गैर-नल का औसत देता हैX एक समूह के भीतर।
लेकिन क्या आप जानते हैं कि आप DISTINCT
जोड़ सकते हैं इस फ़ंक्शन के लिए कीवर्ड?
अगर आप DISTINCT
जोड़ते हैं कीवर्ड, avg()
केवल अलग-अलग मूल्यों के आधार पर इसके परिणामों की गणना करेगा। यह अनिवार्य रूप से डुप्लिकेट मानों को हटाने और फिर शेष मानों पर औसत की गणना करने जैसा ही है।
सिंटैक्स
DISTINCT
का उपयोग करने के लिए कीवर्ड, आप बस इसे पहले तर्क के रूप में डालें।
इस तरह:
avg(DISTINCT X)
जहां X
वह कॉलम नाम है जिसके लिए आप औसत की गणना कर रहे हैं।
उदाहरण
Products
नामक निम्न तालिका लें::
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Blue Widget 10.0 3 Red Widget 10.0 4 Green Widget 10.0 5 Widget Stick 89.75 6 Foo Cap 11.99
अगर मैं एक सामान्य avg()
run चलाता हूं मूल्य कॉलम पर:
SELECT avg(Price) FROM Products;
यहाँ मुझे क्या मिलता है:
45.2066666666667
लेकिन अगर मैं एक DISTINCT
चलाता हूं क्वेरी:
SELECT avg(DISTINCT Price) FROM Products;
मुझे यह मिलता है:
62.81
तो इस मामले में यह परिणाम को काफी हद तक बदल देता है।
स्पष्ट होने के लिए, यहाँ वे साथ-साथ हैं:
SELECT
avg(Price) AS "Non-Distinct",
avg(DISTINCT Price) AS "Distinct"
FROM Products;
परिणाम:
Non-Distinct Distinct ---------------- ---------- 45.2066666666667 62.81
जैसा कि आप शायद कल्पना कर सकते हैं, DISTINCT
. का उपयोग करके avg()
. के साथ कीवर्ड परिणामों को बहुत कम कर सकता है, खासकर यदि सीमा के एक छोर पर बहुत सारे डुप्लिकेट हैं, लेकिन दूसरे छोर पर कई डुप्लिकेट नहीं हैं।