usando
row_number() e uma tabela derivada para limitar cada recipient aos 3 principais valores recebidos e, em seguida, agrupando por recipient retornando aqueles com 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
retorna:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
demonstração do postgres do rextester:https://rextester.com/PFR74297
A pergunta foi editada e removeu algumas informações pertinentes da 3ª revisão da pergunta :o que já foi tentado.
Com base nessas informações, concluí que o OP queria encontrar
recipients que recebeu uma sum(amount)>=1024 de 3 ou menos transferências desse destinatário -- não limitado aos destinatários com 3 ou menos transferências e sum(amount)>=1024 .