PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak uzyskać sumowanie z liczbą większą niż określona kwota

za pomocą row_number() i tabelę pochodną, ​​aby ograniczyć każdego recipient do 3 najwyższych otrzymanych kwot, a następnie grupowanie według recipient zwracanie tych, które mają 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

zwraca:

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

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

Pytanie zostało zmienione, przez co usunięto niektóre istotne informacje z trzeciej wersji pytania :co już zostało wypróbowane.

Na podstawie tych informacji doszedłem do wniosku, że OP chce znaleźć recipients które otrzymały sum(amount)>=1024 od 3 lub mniej dowolnych przelewów tego odbiorcy -- nie ogranicza się do tych odbiorców z 3 lub mniej przelewami i 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. Jak sprawdzić, czy długi lat mieści się w granicach miasta?

  2. Uciekanie nazw kolumn podobnych do słów kluczowych w Postgres

  3. Pokaż ostatnią wiadomość w tablicy wiadomości

  4. Zapytanie Postgres jsonb na zagnieżdżonym obiekcie

  5. instalacja postgresql nie powiodła się