sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo obtener una suma con un recuento mayor que cierta cantidad

usando row_number() y una tabla derivada para limitar cada recipient a sus 3 cantidades principales recibidas, luego agrupando por recipient devolviendo aquellos que tienen 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

devuelve:

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

demostración de rextester postgres:http://rextester.com/PFR74297

Se editó la pregunta que eliminó parte de la información pertinente de la 3ra revisión de la pregunta :lo que ya se intentó.

Basándome en esa información, llegué a la conclusión de que OP quería encontrar recipients que recibió un sum(amount)>=1024 de 3 o menos de cualquiera de las transferencias de ese destinatario, sin limitarse a aquellos destinatarios con 3 o menos transferencias y sum(amount)>=1024 .