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 |
+--------------+
rextester postgresデモ: http://rextester.com/PFR74297
質問が編集され、質問の3番目のリビジョン からいくつかの関連情報が削除されました。 :すでに試したこと。
その情報に基づいて、OPはrecipient
を見つけたいと結論付けました。 sum(amount)>=1024
を受け取った その受信者の転送のうち3つ以下から-3回以下の転送でsum(amount)>=1024
の受信者に限定されません 。