4

テーブルに金額のリストがありtransactionsます。person_id合計金額が より大きいそれぞれの取引合計金額を調べたいと思います50

私はこれがうまくいくことを望んでいましたが、うまくいきませんでした:

SELECT (
    SELECT SUM(amount) 
    FROM transactions WHERE person_id = p.id
) AS total_amount
FROM people AS p 
WHERE total_amount > 50

これを機能させる唯一の方法は次のとおりです。

SELECT (
    SELECT SUM(amount) 
    FROM transactions WHERE person_id = p.id
) AS total_amount
FROM people AS p 
WHERE (
    SELECT SUM(amount) 
    FROM transactions WHERE person_id = p.id
) > 50

..これは非常に非効率的です。クエリをより適切にフォーマットする方法について何か提案はありますか?

4

1 に答える 1

6

試す

SELECT person_id, SUM(amount)
  FROM transactions
GROUP BY person_id
HAVING SUM(amount) > 50

SQLフィドル

更新: peopleそしてtransactions参加しました

SELECT t.person_id, p.name, SUM(t.amount) amount
  FROM transactions t JOIN
       people p ON t.person_id = p.id 
GROUP BY t.person_id, p.name
HAVING SUM(t.amount) > 50

SQLフィドル

于 2013-05-10T08:19:28.870 に答える