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:http://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
.