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
।