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       |
    +--------------+
    

    rextester postgresデモ: http://rextester.com/PFR74297

    質問が編集され、質問の3番目のリビジョン からいくつかの関連情報が削除されました。 :すでに試したこと。

    その情報に基づいて、OPはrecipientを見つけたいと結論付けました。 sum(amount)>=1024を受け取った その受信者の転送のうち3つ以下から-3回以下の転送でsum(amount)>=1024の受信者に限定されません 。



    1. ActiveXListViewコントロールチュートリアル-01

    2. MySQLSELECTから値を連結する方法

    3. このエラーがスローされないように、このMySQLクエリを書き直すにはどうすればよいですか。FROM句で更新するターゲットテーブル「crawlLog」を指定できませんか?

    4. PL / SQL BEGIN ... ENDブロックはいつネストする必要がありますか?