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