utilizzando row_number()
e una tabella derivata per limitare ogni recipient
ai primi 3 importi ricevuti, quindi raggruppandoli per recipient
restituendo quelli con 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
resi:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
demo di rextester postgres:http://rextester.com/PFR74297
La domanda è stata modificata in modo da rimuovere alcune informazioni pertinenti dalla 3a revisione della domanda :ciò che è stato già provato.
Sulla base di queste informazioni, ho concluso che OP voleva trovare recipients
che ha ricevuto un sum(amount)>=1024
da 3 o meno di qualsiasi trasferimento di quel destinatario -- non limitato a quei destinatari con 3 o meno trasferimenti e sum(amount)>=1024
.