PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment obtenir une sommation avec un nombre supérieur à un certain montant

en utilisant row_number() et une table dérivée pour limiter chaque recipient à leurs 3 premiers montants reçus, puis regroupement par recipient renvoyant ceux qui ont 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

renvoie :

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

démo rextester postgres :http://rextester.com/PFR74297

La question a été modifiée pour supprimer certaines informations pertinentes de la 3ème révision de la question :ce qui a déjà été essayé.

Sur la base de ces informations, j'ai conclu qu'OP voulait trouver des recipients qui a reçu un sum(amount)>=1024 à partir de 3 ou moins de n'importe lequel des transferts de ce destinataire -- non limité aux destinataires avec 3 transferts ou moins et sum(amount)>=1024 .