SQL एग्रीगेट फ़ंक्शन, GROUP BY, HAVING और डिस्टिंक्ट/एडवांस्ड एग्रीगेट, orders टेबल पर रिटर्न वैल्यू और एक-पंक्ति उदाहरणों के साथ।
एग्रीगेट फ़ंक्शन कई पंक्तियों को एक स्केलर परिणाम में समेट देते हैं। GROUP BY एग्रीगेशन से पहले पंक्तियों को की (key) के अनुसार विभाजित करता है। HAVING एग्रीगेशन के बाद समूहों को फ़िल्टर करता है। COUNT(*) को छोड़कर हर एग्रीगेट NULL इनपुट को छोड़ देता है।
रेफ़रेंस टेबल · 29 प्रविष्टियाँ
SQL एग्रीगेट फ़ंक्शनExplained
29 of 29 rows
स्केलर
नॉन-नल इनपुट वैल्यू की गिनती; COUNT(*) सभी पंक्तियाँ गिनता है।
SELECT COUNT(*) FROM orders
नॉन-नल संख्यात्मक वैल्यू का योग। खाली सेट पर NULL रिटर्न करता है।
SELECT SUM(total) FROM orders
नॉन-नल संख्यात्मक वैल्यू का अंकगणितीय माध्य। NULL इनपुट की उपेक्षा।
SELECT AVG(total) FROM orders
किसी भी तुलनीय प्रकार पर सबसे छोटी नॉन-नल वैल्यू।
SELECT MIN(total) FROM orders
किसी भी तुलनीय प्रकार पर सबसे बड़ी नॉन-नल वैल्यू।
SELECT MAX(total) FROM orders
ग्रुप किए गए
इनपुट पंक्तियों को की के अनुसार विभाजित करता है; एग्रीगेट हर विभाजन पर चलते हैं।
SELECT user_id, SUM(total) FROM orders GROUP BY user_id
एग्रीगेशन के बाद हर समूह पर मूल्यांकित होने वाला प्रेडिकेट। एग्रीगेट के लिए WHERE का विकल्प।
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
एक ही पास में हर समूह के लिए कई एग्रीगेट की गणना।
SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
एक ही स्टेटमेंट में कई ग्रुपिंग की गणना; मौजूदा सेट से बाहर की कीज़ NULL रिटर्न करती हैं।
SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
पदानुक्रम-आधारित ग्रुपिंग सेट का शॉर्टहैंड; सब-टोटल और ग्रैंड टोटल जोड़ता है।
SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
सूचीबद्ध कीज़ के हर संयोजन को ग्रुपिंग सेट के रूप में बनाने का शॉर्टहैंड।
SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
एक ही क्लॉज़ में सामान्य ग्रुप कीज़ को ग्रुपिंग सेट्स के साथ मिलाता है।
SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
सॉर्ट क्रम में हर की की पहली पंक्ति रखता है। Postgres एक्सटेंशन।
SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
डिस्टिंक्ट और एडवांस्ड
यूनिक नॉन-नल वैल्यू की गिनती। पहले डुप्लिकेट हटाता है।
SELECT COUNT(DISTINCT user_id) FROM orders
सीमित त्रुटि के साथ डिस्टिंक्ट वैल्यू की संख्या का अनुमान; बड़े इनपुट के लिए बना है।
SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
नॉन-नल स्ट्रिंग्स को डिलिमीटर के साथ जोड़ता है।
SELECT STRING_AGG(user_id::text, ',') FROM orders
नॉन-नल स्ट्रिंग्स को जोड़ता है; STRING_AGG का MySQL नाम।
SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
नॉन-नल इनपुट वैल्यू को ऐरे में एकत्र करता है।
SELECT ARRAY_AGG(total) FROM orders
इनपुट पंक्तियों को JSON ऐरे में एकत्र करता है; JSONB रूप पार्स किया हुआ बाइनरी स्टोर करता है।
SELECT JSONB_AGG(user_id) FROM orders
TRUE जब हर / कोई भी नॉन-नल इनपुट वैल्यू true हो।
SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
BOOL_AND का स्टैंडर्ड उपनाम।
SELECT EVERY(total > 0) FROM orders
सॉर्ट किए गए इनपुट पर इंटरपोलेटेड / निकटतम-रैंक पर्सेंटाइल; WITHIN GROUP आवश्यक।
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
सबसे अधिक बार आने वाली इनपुट वैल्यू; Postgres में एक ऑर्डर्ड-सेट एग्रीगेट।
SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
सॉर्ट क्रम को ऑर्डर्ड-सेट और हाइपोथेटिकल-सेट एग्रीगेट तक पहुँचाता है।
SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
एग्रीगेट को उन पंक्तियों तक सीमित करता है जो शर्त पास करती हैं।
SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
वैल्यू को एग्रीगेट द्वारा जुड़ने या एकत्र होने से पहले सॉर्ट करता है।
SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) और COUNT(1) हर पंक्ति गिनते हैं; COUNT(col) NULL इनपुट छोड़ देता है।
SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
नॉन-नल संख्यात्मक वैल्यू का सैंपल स्टैंडर्ड डेविएशन। STDDEV_POP पॉपुलेशन रूप देता है; बेयर नाम का डिफ़ॉल्ट इंजन के अनुसार बदलता है।
SELECT STDDEV(total) FROM orders
नॉन-नल संख्यात्मक वैल्यू का सैंपल वैरिएंस (STDDEV का वर्ग)। VAR_SAMP और VAR_POP हर रूप को नाम देते हैं।