PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách nhận tổng kết với số lượng lớn hơn số tiền nhất định

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi PostgreSQL khi cố gắng tạo tiện ích mở rộng

  2. Lỗi khi ánh xạ các mảng postgres trong Spring JPA

  3. docker-compile không bắt đầu postgres hình ảnh

  4. Có phím tắt nào để sử dụng dblink trong Postgres không?

  5. Mảng có tất cả các NULL trong PostgreSQL không