sử dụng row_number()
và một bảng dẫn xuất để giới hạn mỗi recipient
vào 3 số tiền cao nhất mà họ nhận được, sau đó nhóm lại theo recipient
trả về những người có 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
lợi nhuận:
+--------------+
| account_name |
+--------------+
| Johnson |
| Taylor |
+--------------+
rextester postgres demo: http://rextester.com/PFR74297
Câu hỏi đã được chỉnh sửa nên đã xóa một số thông tin thích hợp khỏi bản sửa đổi thứ 3 của câu hỏi :những gì đã được thử.
Dựa trên thông tin đó, tôi kết luận rằng OP muốn tìm recipient
đã nhận được sum(amount)>=1024
từ 3 lần chuyển tiền trở xuống của người nhận đó - không giới hạn ở những người nhận có 3 lần chuyển tiền trở xuống và sum(amount)>=1024
.