例文を使って繰り返し業務を時短

【SQL】特定カラムの中でさらに特定条件でデータ抽出(HAVING) 

SQLを使って特定カラムの中でさらに特定条件でデータ抽出する方法 SQL

特定カラムの中でさらに特定条件でデータを抽出するには、HAVING句を使用することができます。

HAVING句は、GROUP BY句でグループ化された結果に対して、条件を指定して絞り込むために使用されます。つまり、HAVING句を使用することで、特定カラムに対してグループ化された条件に合致するデータを抽出することができます。

特定カラムの中でさらに特定条件でデータ抽出(HAVING)


SELECT 特定のカラム、集計関数(集計対象カラム)  
FROM テーブル名
WHERE 条件式
GROUP BY 特定のカラム
HAVING 集計関数(集計対象カラム)で条件式
ORDER BY ソート条件

#売上金額が1000円以上の商品名のみ抽出
SELECT
    商品名
    , sum(売上金額)
FROM 売上実績
GROUP BY 商品名
HAVING sum(売上金額) >= 1000

*HAVINGはGROUP BYとORDER BYの間に表記


HAVINGとWHEREの違い

HAVINGとWHEREはともにデータを抽出するために使用されるキーワードですが、その使用方法には違いがあります。

WHERE句は、抽出対象のレコードに対して条件を指定するために使用されます。WHERE句はSELECT文のFROM句の後に記述され、FROM句で指定したテーブルからレコードを抽出する際に条件を指定します。

HAVING句は、GROUP BY句でグループ化された結果に対して条件を指定するために使用されます。つまり、HAVING句はグループごとに合計、平均などの集計を行い、その集計結果に対して条件を指定します。HAVING句はGROUP BY句の後に記述されます。

*WHERE句はレコード単位で条件を指定し、HAVING句はグループ単位で条件を指定します。また、WHERE句はSELECT文のFROM句の後に記述され、HAVING句はGROUP BY句の後に記述されるという違いがあります。

データに対して抽出を行う

#実行の順番(順番を誤って表記するとエラー)
#「どのテーブルの、どのデータを、どうグルーピングし、
   グルーピングしたデータをどう抽出し、どのカラムを表示するか」の流れ
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

*WHEREはGROUP BYされる前のデータに抽出条件を付けくわえる

*HAVINGはGROUP BYされた後のデータに抽出条件を 付けくわえる

WHEREとHAVINGを同時に使う

#「Tシャツ以外の売上金額の合計を集計し、売上金額が1000円以下のみのデータ」を出力
#WHEREの!=は否定:ジャケット以外のデータを抽出
SELECT
    商品名
    , sum(売上金額)
FROM
    実績管理表
WHERE
    商品名 !='Tシャツ'
GROUP BY
    商品名
HAVING
    sum(売上金額) <= 1000

コメント

タイトルとURLをコピーしました