Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL ओवर () क्लॉज - यह कब और क्यों उपयोगी है?

आप कर सकते हैं 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

बहुत आसान और साफ-सुथरा, है ना?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अग्रणी शून्य के साथ एक स्ट्रिंग को पैड करें ताकि यह SQL Server 2008 में 3 वर्ण लंबा हो

  2. Azure SQL DB घोषणा (पूर्वावलोकन) के लिए स्पॉटलाइट क्लाउड समर्थन

  3. टी-एसक्यूएल का उपयोग करके SQL सर्वर में उपयोगकर्ता-परिभाषित डेटा प्रकार उपनाम कैसे बनाएं?

  4. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में कस्टम शॉर्टकट कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 10

  5. शीर्ष 50 SQL सर्वर साक्षात्कार प्रश्न जो आपको 2022 में तैयार करने चाहिए