आप कर सकते हैं GROUP BY SalesOrderID
use का उपयोग करें . अंतर यह है कि GROUP BY के साथ आप केवल उन स्तंभों के लिए समेकित मान प्राप्त कर सकते हैं जो GROUP BY में शामिल नहीं हैं।
इसके विपरीत, GROUP BY के बजाय विंडोड एग्रीगेट फ़ंक्शंस का उपयोग करके, आप एग्रीगेटेड और नॉन-एग्रीगेट दोनों मानों को पुनः प्राप्त कर सकते हैं। यानी, हालांकि आप अपनी उदाहरण क्वेरी में ऐसा नहीं कर रहे हैं, आप अलग-अलग OrderQty
दोनों को पुनः प्राप्त कर सकते हैं एक ही SalesOrderID
के समूहों पर मान और उनके योग, गणना, औसत आदि। एस.
यहां एक व्यावहारिक उदाहरण दिया गया है कि खिड़की वाले समुच्चय महान क्यों हैं। मान लीजिए कि आपको गणना करने की आवश्यकता है कि कुल प्रत्येक मूल्य का कितना प्रतिशत है। खिड़की वाले समुच्चय के बिना आपको पहले समेकित मूल्यों की एक सूची प्राप्त करनी होगी और फिर इसे मूल पंक्ति में वापस जोड़ना होगा, अर्थात इस तरह:
SELECT
orig.[Partition],
orig.Value,
orig.Value * 100.0 / agg.TotalValue AS ValuePercent
FROM OriginalRowset orig
INNER JOIN (
SELECT
[Partition],
SUM(Value) AS TotalValue
FROM OriginalRowset
GROUP BY [Partition]
) agg ON orig.[Partition] = agg.[Partition]
अब देखें कि आप विंडो वाले समुच्चय के साथ ऐसा कैसे कर सकते हैं:
SELECT
[Partition],
Value,
Value * 100.0 / SUM(Value) OVER (PARTITION BY [Partition]) AS ValuePercent
FROM OriginalRowset orig
बहुत आसान और साफ-सुथरा, है ना?