mit row_number() und eine abgeleitete Tabelle, um jeden recipient einzuschränken zu den 3 höchsten erhaltenen Beträgen, dann Gruppierung nach recipient Zurückgeben derjenigen mit 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
gibt zurück:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
Rextester-Postgres-Demo:https://rextester.com/PFR74297
Die Frage wurde bearbeitet, wodurch einige relevante Informationen aus der 3. Überarbeitung der Frage entfernt wurden :was wurde schon versucht.
Basierend auf diesen Informationen kam ich zu dem Schluss, dass OP recipient finden wollte die einen sum(amount)>=1024 erhalten haben von 3 oder weniger Überweisungen dieses Empfängers – nicht beschränkt auf Empfänger mit 3 oder weniger Überweisungen und sum(amount)>=1024 .