優先順位となるとサブクエリの有無によっても変わってきますが、ご質問の内容ですと、HAVINGのSUMが先に実行されて、対象行が抽出される動きとなるのではないかと思います。
抽出された行について、SELECTで指定した列に対するSUMが実行されます。
HAVING句にはGROUP BYで集計した内容に基づいた抽出条件を記載できますので、SELECTで取得する内容以外の条件を指定することも可能です。
下記はMySQLでの例を記載しますが、tax列の合計が1000を超える費目に対して金額の合計を取得するという内容でSELECT文を実行しています。
ここでは食費のSUM(tax)の結果は705となるので、SELECT文の結果として抽出されません。
sql
1-- CREATE TABLE kakeibo (himoku VARCHAR(32), kingaku INT, tax INT);
2
3-- INSERT INTO kakeibo VALUES ('食費', 1000, 80);
4-- INSERT INTO kakeibo VALUES ('食費', 500, 25);
5-- INSERT INTO kakeibo VALUES ('食費', 1500, 120);
6-- INSERT INTO kakeibo VALUES ('食費', 2000, 160);
7-- INSERT INTO kakeibo VALUES ('食費', 4000, 320);
8-- INSERT INTO kakeibo VALUES ('光熱費', 5000, 400);
9-- INSERT INTO kakeibo VALUES ('光熱費', 6000, 480);
10-- INSERT INTO kakeibo VALUES ('光熱費', 7000, 560);
11-- INSERT INTO kakeibo VALUES ('交際費', 3000, 240);
12-- INSERT INTO kakeibo VALUES ('交際費', 5000, 400);
13-- INSERT INTO kakeibo VALUES ('交際費', 2000, 160);
14-- INSERT INTO kakeibo VALUES ('交際費', 3000, 240);
15-- INSERT INTO kakeibo VALUES ('家賃', 50000, 4000);
16
17SELECT himoku, SUM(kingaku) FROM kakeibo GROUP BY himoku HAVING SUM(tax) > 1000;
18+-----------+--------------+
19| himoku | SUM(kingaku) |
20+-----------+--------------+
21| 交際費 | 13000 |
22| 光熱費 | 18000 |
23| 家賃 | 50000 |
24+-----------+--------------+
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。