विंडो फंक्शन क्या हैं?
विंडो फ़ंक्शंस उपयोगकर्ताओं को परिणाम सेट के विभाजन (यानी उपसमूह या अनुभाग) के विरुद्ध गणना करने में सक्षम बनाता है, आमतौर पर एक तालिका या किसी अन्य क्वेरी से परिणाम। पारंपरिक एकत्रीकरण कार्यों के विपरीत, जो क्वेरी में परिभाषित प्रत्येक समूह के लिए केवल एक मान लौटाते हैं, विंडो फ़ंक्शन प्रत्येक इनपुट पंक्ति के लिए एक मान लौटाते हैं।
विंडो फ़ंक्शन कैसे सहायक होते हैं?
विंडो फ़ंक्शंस दक्षता बढ़ाते हैं और प्रश्नों की जटिलता को कम करते हैं जो अधिक जटिल SQL अवधारणाओं का विकल्प प्रदान करके डेटा सेट के विभाजन (विंडो) का विश्लेषण करते हैं, उदा। व्युत्पन्न प्रश्न। सामान्य उपयोग के मामलों में शामिल हैं:
- एक विशिष्ट विंडो के भीतर रैंकिंग परिणाम (जैसे प्रति-समूह रैंकिंग)
- किसी विशिष्ट विंडो में दूसरी पंक्ति से डेटा एक्सेस करना (उदा. अवधि-दर-अवधि रिपोर्टिंग)
- एक विशिष्ट विंडो के भीतर एकत्रीकरण (जैसे चल रहे योग):
विंडो फ़ंक्शंस का उपयोग कैसे करें
विंडो फ़ंक्शन OVER
. के साथ आरंभ किए जाते हैं खंड, और तीन अवधारणाओं का उपयोग करके कॉन्फ़िगर किया गया है:
- विंडो पार्टीशन (
PARTITION BY
) - पंक्तियों को विभाजन में समूहित करता है - विंडो ऑर्डरिंग (
ORDER BY
) - प्रत्येक विंडो के भीतर पंक्तियों के क्रम या क्रम को परिभाषित करता है - विंडो फ्रेम (
ROWS
) - निर्दिष्ट पंक्ति से ऑफसेट का उपयोग करके विंडो को परिभाषित करता है
सिंटैक्स अवलोकन
function (expression) OVER
( [ PARTITION BY expression_list ]
[ ORDER BY order_list ]
[ ROWS frame_clause ])
परिभाषाएं
- अभिव्यक्ति_सूची:अल्पविराम से अलग किए गए भावों की सूची, आमतौर पर स्तंभ नाम
- order_list:अल्पविराम से अलग किए गए भावों की सूची, आमतौर पर स्तंभ नाम
- frame_clause:
CURRENT ROW
. का उपयोग करके ऑफ़सेट को परिभाषित करें ,_value_ PRECEDING
,UNBOUNDED PRECEDING
,_value_ FOLLOWING
,UNBOUNDED FOLLOWING
उदाहरण
रैंकिंग:प्रति-समूह रैंकिंग
SELECT
campaign
, month
, total_cost
, rank() OVER (PARTITION BY month ORDER BY month DESC, total_cost DESC) as "rank"
FROM Cost_by_Month
LIMIT 8
पिछली पंक्ति:अवधि-दर-अवधि विश्लेषण
SELECT
campaign
, month
, total_cost
, LAG(total_cost, 1) OVER (ORDER BY campaign, month) as "previous total cost"
FROM Cost_by_Month
WHERE campaign = 'TV'
LIMIT 4
विंडो के अंदर एग्रीगेशन:रनिंग टोटल
SELECT
campaign, month, monthly_cost
, sum(monthly_cost) OVER (PARTITION BY campaign ORDER BY month ROWS BETWEEN UNBOUNDED
PRECEDING and CURRENT ROW) as "running cost total"
FROM Cost_by_Month
दस्तावेज़ीकरण और कार्य सूची:
कृपया ध्यान दें कि डेटाबेस से डेटाबेस में उपयोग और सिंटैक्स में सूक्ष्म अंतर मौजूद हैं। आपके कार्यान्वयन के लिए विशिष्ट जानकारी के लिए, कृपया नीचे दिए गए स्रोत-विशिष्ट दस्तावेज़ीकरण का उपयोग करें।
पोस्टग्रेज
- ट्यूटोरियल
- कार्य
रेडशिफ्ट
- ट्यूटोरियल
- कार्य
Oracle
- ट्यूटोरियल
SQLServer
- ट्यूटोरियल
BigQuery
- ट्यूटोरियल