menggunakan row_number()
dan tabel turunan untuk membatasi setiap recipient
ke 3 jumlah teratas yang diterima, lalu dikelompokkan berdasarkan recipient
mengembalikan mereka yang memiliki 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
kembali:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
demo rextester postgres:http://rextester.com/PFR74297
Pertanyaan telah diedit sehingga menghapus beberapa informasi terkait dari revisi ketiga pertanyaan :apa yang sudah mencoba.
Berdasarkan informasi itu, saya menyimpulkan bahwa OP ingin menemukan recipient
yang menerima sum(amount)>=1024
dari 3 atau kurang dari transfer penerima mana pun -- tidak terbatas pada penerima dengan 3 atau lebih sedikit transfer dan sum(amount)>=1024
.