PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como obter soma com contagem maior que certa quantidade


usando row_number() e uma tabela derivada para limitar cada recipient aos 3 principais valores recebidos e, em seguida, agrupando por recipient retornando aqueles com 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

retorna:
+--------------+
| account_name |
+--------------+
| Johnson      |
| Taylor       |
+--------------+

demonstração do postgres do rextester:http://rextester.com/PFR74297

A pergunta foi editada e removeu algumas informações pertinentes da 3ª revisão da pergunta :o que já foi tentado.

Com base nessas informações, concluí que o OP queria encontrar recipients que recebeu uma sum(amount)>=1024 de 3 ou menos transferências desse destinatário -- não limitado aos destinatários com 3 ou menos transferências e sum(amount)>=1024 .