PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да получите сумиране с брой, по-голям от определена сума

използвайки row_number() и извлечена таблица за ограничаване на всеки recipient към първите 3 получени суми, след което групирани по recipient връща тези, които имат 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

връща:

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

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

Въпросът беше редактиран, което премахна част от уместната информация от 3-та редакция на въпроса :това, което вече беше изпробвано.

Въз основа на тази информация заключих, че OP иска да намери recipients които са получили sum(amount)>=1024 от 3 или по-малко от всеки от преводите на този получател -- не се ограничава до тези получатели с 3 или по-малко превода и 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. Как да излезете от помощната програма на командния ред PostgreSQL:psql

  2. Как да създадете таблица postgresql при стартиране от docker compose

  3. flask-migrate не може да изпусне таблица, защото други обекти зависят от нея

  4. Как да игнорирате въпросителен знак като контейнер, когато използвате PDO с PostgreSQL

  5. Как да обходите йерархична дървовидна структура назад с помощта на рекурсивни заявки