GROUP BYを使った表の数値の合計あって、その合計が10個以上とかいう条件で抽出したい時にHAVING句を使う
member_id | point -----------+------- 4 | 2 4 | 2 4 | 3 4 | 3 4 | 3 4 | 1 4 | 3 4 | 2 8 | 2 8 | 0 4 | 1 8 | 3 4 | 6 8 | 0これをGROUP BY を使って合計を出すと、
SELECT member_id,SUM(point) AS sum FROM points GROUP BY member_id;
member_id | sum -----------+----- 4 | 43 8 | 7こんな結果になるわけですが、この結果表をさらに、合計が10個以上、とかそういう条件で絞り込みたい訳です。
もしかしてこんなのあり?
SELECT member_id, SUM(point) AS sum FROM points WHERE sum > 10 GROUP BY member_id;とかやってみましたが、これは、
ERROR: column "sum" does not existになります。だめです。
ということで、HAVING句を使って、
SELECT member_id, SUM(point) AS sum FROM points GROUP BY member_id HAVING SUM(point) > 10;というように書きます。
結果。
member_id | sum -----------+----- 4 | 43