PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come ottenere la somma con un conteggio maggiore di un determinato importo

utilizzando row_number() e una tabella derivata per limitare ogni recipient ai primi 3 importi ricevuti, quindi raggruppandoli per recipient restituendo quelli con 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

resi:

+--------------+
| account_name |
+--------------+
| Johnson      |
| Taylor       |
+--------------+

demo di rextester postgres:http://rextester.com/PFR74297

La domanda è stata modificata in modo da rimuovere alcune informazioni pertinenti dalla 3a revisione della domanda :ciò che è stato già provato.

Sulla base di queste informazioni, ho concluso che OP voleva trovare recipients che ha ricevuto un sum(amount)>=1024 da 3 o meno di qualsiasi trasferimento di quel destinatario -- non limitato a quei destinatari con 3 o meno trasferimenti e sum(amount)>=1024 .