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

निश्चित राशि से बड़ी संख्या के साथ योग कैसे प्राप्त करें

row_number() . का उपयोग करके और प्रत्येक recipient . को सीमित करने के लिए एक व्युत्पन्न तालिका प्राप्त उनकी शीर्ष 3 राशियों में, फिर recipient . के आधार पर समूहीकृत करना जिनके पास sum(amount)>=1024 . है उन्हें लौटाना

select recipient as account_name
from (
  select * 
    , row_number() over (
        partition by recipient
        order by amount desc
        ) as rn
  from transfers
  ) as i
where rn < 4
group by recipient
having sum(amount)>=1024

रिटर्न:

+--------------+
| account_name |
+--------------+
| Johnson      |
| Taylor       |
+--------------+

रेक्सटेस्टर डेमो पोस्ट करता है:http://rextester.com/PFR74297

प्रश्न संपादित किया गया था जिसने प्रश्न के तीसरे संशोधन से कुछ प्रासंगिक जानकारी हटा दी थी। :पहले से क्या कोशिश की गई थी।

उस जानकारी के आधार पर, मैंने निष्कर्ष निकाला कि ओपी recipients को ढूंढना चाहता था जिसे sum(amount)>=1024 प्राप्त हुआ उस प्राप्तकर्ता के किसी भी हस्तांतरण में से 3 या उससे कम -- उन प्राप्तकर्ताओं तक सीमित नहीं जिनके पास 3 या उससे कम स्थानान्तरण हैं और sum(amount)>=1024



  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:VACCUM FULL बनाम pg_dump और पुनर्स्थापित करें

  2. psql . में सेट, \set और \pset के बीच अंतर

  3. SET client_min_messages to WARNING के बावजूद INFO आउटपुट ठीक पहले

  4. पोस्टग्रेज JSON डेटा प्रकार रेल क्वेरी

  5. जब एक भी बाधा विफल हो जाती है तो मैं PostgreSQL को पूरे लेनदेन को रद्द नहीं करने के लिए कैसे कह सकता हूं?