za pomocą row_number()
i tabelę pochodną, aby ograniczyć każdego recipient
do 3 najwyższych otrzymanych kwot, a następnie grupowanie według recipient
zwracanie tych, które mają 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
zwraca:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
rextester postgres demo:http://rextester.com/PFR74297
Pytanie zostało zmienione, przez co usunięto niektóre istotne informacje z trzeciej wersji pytania :co już zostało wypróbowane.
Na podstawie tych informacji doszedłem do wniosku, że OP chce znaleźć recipients
które otrzymały sum(amount)>=1024
od 3 lub mniej dowolnych przelewów tego odbiorcy -- nie ogranicza się do tych odbiorców z 3 lub mniej przelewami i sum(amount)>=1024
.