SQL HAVING

これをマスター

マスター HAVINGで集計結果をさらにフィルター

テーマ

売上条件を満たしていた日だけ探す
 
 
テーブル: sales
 取引ID取引日店舗ID商品ID個数合計金額
174/1/203521250
2114/1/203272700
3194/5/203462400
4324/11/204232360
5334/16/204341245
6394/21/204321300
7505/1/205492600
8535/1/205601375
9595/11/205512600
10625/21/205492600
結果: (スペース都合で5行のみ表示)
 取引日合計
14/1/20950
25/1/20975
35/11/20600
45/21/20600
5

はじめに

HAVINGは、GROUP BYで集計した結果を
さらにフィルター出来る機能です

Excelで言うと
ピボットテーブルの結果を
フィルターして該当したデータだけ表示するイメージです

サンプルでは日ごとの合計をまず集計して
その結果のうち
500円を超えた日だけを抽出しています

詳しく

HAVING 検索条件

サンプルを見ていきましょう

ここではまず

SELECT [取引日], SUM([合計金額]) AS 合計
FROM sales
GROUP BY [取引日]

GROUP BY と SUM で
日毎の合計売上を出しています

GROUP BYの後に

HAVING SUM([合計金額]) > 500

を足すことで
集計結果のSUM([合計金額]) が500を超える
データにフィルターしています

考え方はシンプルで
SELECTの後に使った集計関数 ( SUM, COUNT, AVGなど )と
フィルターした条件 ( 大きい, 小さい, イコール > < = など)を
HAVINGの後に書き加えるだけです

別バターン

合計で無く回数で集計する場合

SELECT [取引日], COUNT([合計金額]) AS 合計
FROM sales
GROUP BY [取引日]
HAVING COUNT([合計金額]) >= 2

COUNTでフィルターをしてあげると
N回以上の売上があった
とする事も出来ます

あわせてご覧ください

SQL CREATE

SQL

SQL Tips

Read More

SQL DELETE

SQL

SQL Tips

Read More

SQL SELECT

SQL

This page introduces SQL SELECT and tips

Read More