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

SQL सर्वर - सहसंबंध के साथ सशर्त एकत्रीकरण

एक आसान उपाय है:

SELECT c.Customer, c."User", c."Revenue",
       1.0 * Revenue/ NULLIF(c2.sum_total, 0) AS percentage,
       1.0 * c2.sum_running / NULLIF(c2.sum_total, 0) AS running_percentage
FROM t c CROSS APPLY
     (SELECT SUM(c2.Revenue) AS sum_total,
             SUM(CASE WHEN c2.Revenue >= x.Revenue THEN c2.Revenue ELSE 0 END) 
                 as sum_running
      FROM t c2 CROSS JOIN
           (SELECT c.REVENUE) x
      WHERE c."User" = c2."User"
     ) c2
ORDER BY "User", Revenue DESC;

मुझे यकीन नहीं है कि यह सीमा SQL '92 मानक में क्यों है या नहीं। मैंने इसे 20 या इतने साल पहले बहुत अच्छी तरह से याद किया था, लेकिन मुझे वह विशेष सीमा याद नहीं है।

मुझे ध्यान देना चाहिए:

  • एसक्यूएल 92 मानक के समय, पार्श्व जोड़ वास्तव में रडार पर नहीं थे। Sybase के पास निश्चित रूप से ऐसी कोई अवधारणा नहीं थी।
  • अन्य डेटाबेस करते हैं बाहरी संदर्भों के साथ समस्याएं हैं। विशेष रूप से, वे अक्सर दायरे को एक स्तर तक सीमित कर देते हैं।
  • एसक्यूएल मानक स्वयं वास्तविक डेटाबेस उपयोगकर्ता आवश्यकताओं द्वारा संचालित होने के बजाय अत्यधिक राजनीतिक (अर्थात, विक्रेता द्वारा संचालित) होता है। खैर, समय के साथ, यह सही दिशा में आगे बढ़ता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 42809 Asp.Net C# एप्लिकेशन से PostgreSQL संग्रहीत कार्यविधि को निष्पादित करने में त्रुटि

  2. एक बड़े के रूप में PostgreSQL योग टाइपकास्टिंग

  3. pypyodbc भीख मांगने के लिए ट्यूटोरियल खोजने में मदद करता है

  4. PHP धूमकेतु अपाचे एमपीएम को अवरुद्ध कर सो रहा है?

  5. Oracle बल्क कलेक्ट के बराबर PostgreSQL