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

कुल के प्रतिशत की गणना करने के लिए SQL विंडो फ़ंक्शन का उपयोग कैसे करें

मुझे लगता है कि आप इसे ढूंढ रहे हैं:

SELECT d1, d2, sum(v)/sum(sum(v)) OVER (PARTITION BY d1) AS share
FROM   test
GROUP  BY d1, d2;

अनुरोधित परिणाम उत्पन्न करता है।

विंडो फ़ंक्शन बाद लागू होते हैं कुल कार्य। बाहरी sum() में sum(sum(v)) OVER ... एक विंडो फ़ंक्शन है (संलग्न OVER ... क्लॉज) जबकि आंतरिक sum() एक समग्र कार्य है।

प्रभावी रूप से वही:

WITH x AS (
   SELECT d1, d2, sum(v) AS sv
   FROM   test
   GROUP  BY d1, d2
   )
SELECT d1, d2, sv/sum(sv) OVER (PARTITION BY d1) AS share
FROM   x;

या (सीटीई के बिना):

SELECT d1, d2, sv/sum(sv) OVER (PARTITION BY d1) AS share
FROM  (
   SELECT d1, d2, sum(v) AS sv
   FROM   test
   GROUP  BY d1, d2
   ) x;

या @ म्यू का संस्करण।

इसके अलावा:ग्रीनप्लम ने संस्करण 4.2 के साथ सहसंबद्ध उपश्रेणियाँ पेश कीं। रिलीज़ नोट देखें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में क्रॉसस्टैब के लिए गतिशील रूप से कॉलम उत्पन्न करें

  2. पोस्टग्रेज से हरोकू एसक्यूएल लॉग को कैसे बंद करें

  3. सोनार विश्लेषण में लंबा समय लगता है

  4. PostgreSql में आरक्षण से केवल कार्य समय कैसे वापस करें?

  5. एक्सटेंशन को स्थानांतरित करने योग्य नहीं कैसे बनाया जाए?