Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

SQLのGROUP BYとHAVING句

By admin on 2月 4, 2021

アナリストにとって、売上、利益、コスト、給与などのデータを要約することは重要な要素です。 データの要約は、アナリストが視覚化を作成したり、調査結果を結論付けたり、レポートを作成するのに非常に役立ちます。 SQLでは、GROUP BY句は、データシリーズを要約または集約するためのツールの1つです。 例えば、1つの四半期における毎日の売上と組み合わせを集計して、上級管理職に見せることができます。 同様に、会社の各部門に何人の従業員がいるかをカウントしたい場合も同様です。

データをグループ化した後、HAVING句を使ってグループ化されたレコードをフィルタリングすることができます。 HAVING句は、指定された条件にマッチするグループ化されたレコードを返します。 また、グループ化されたレコードをORDER BYでソートすることもできます。

このチュートリアルでは、GROUP BY句を例を挙げて詳しく説明します。 このチュートリアルで学ぶトピックは以下の通りです。

  • Group By 句
  • Having 句
  • Aggregate 関数
  • Compare Having and Where Clause in SQL
  • GROUP BY With JOIN Example
  • GROUP BY Comparison with other Clause
  • Hands-on Practice Assignment
  • Hands-on実践課題
  • 結論

GROUP BY句

GROUP BY句は、類似したデータをグループにまとめるためにSQLのSELECT文で使用されます。 GROUP BY句は、いくつかの関数を使用して、単一または複数の列の複数のレコードを結合します。 一般的には、min(),max(),avg(),count(),sum()などの集約関数を使用して、単一または複数の列に結合します。

  • split phaseでは、値によってグループを分割します。
  • apply phaseでは、集約関数を適用して単一の値を生成します。
  • combiner phaseでは、単一の値を持つグループを単一の値に結合します。

Points to Remember:

  • GROUP BY句はSELECT文で使用します。
  • GROUP BYは、選択されたカラムに基づいて結果を集約します。
  • GROUP BYは、データのグループごとに1つの結果のみを返します。
  • GROUP BY句は、常にWHERE句の後に続きます。
  • GROUP BY句は、常にORDER BY句の前に続きます(http://slideplayer.com/slide/15440670/)。

上記の例では、テーブルはDeptID列に基づいてグループ化され、給与は部門ごとに集計されます。

Having Clause

HAVING句は、GROUP BY句の条件付き句としてSQLで使用されます。 この条件節は、集約関数の結果が与えられた条件と一致した行のみを返します。 これは、WHERE句が集約結果と結合できないためにSQLに追加されたもので、目的が異なります。

  • HAVING句は常にGROUP BY句と組み合わせて使用されます。
  • HAVING句は個々のレコードではなく、グループのレコードにデータを制限します。

上記の例では、テーブルはDeptID列に基づいてグループ化され、これらのグループ化された行はAVG(Salary)> 3000という条件でHAVING句を使用してフィルタリングされています。

集約関数

集約関数は、COUNT、MAX、MIN、AVG、SUM、STDDEV、VARIANCE など、グループの結果を 1 つにまとめるために使用されます。

  • SUM() これらの関数は、複数行の関数としても知られています。 各グループの合計を返します。
  • COUNT():各グループの行数を返します。 各グループの行数を返します。
  • AVG():各グループの平均値と平均値を返します。
  • MIN():各グループの平均値と平均を返します。 各グループの最小値を返します。
  • MAX():各グループの最小値を返します。 各グループの最小値を返します。

Compare Having and Where Clause in SQL

  • 場合によっては、個々のレコードをフィルタリングする必要があります。 そのような場合には、WHERE句を使用することができます。一方、特定の条件でグループをフィルタリングする必要がある場合もあります。
  • WHERE句はタプル単位でレコードをフィルタリングしますが、HAVING句はグループ全体をフィルタリングします。
  • 1つのクエリにWHERE句とHAVING句の両方が含まれることがあります。
  • WHERE句はGROUP BY句の前にレコードを制限するのに対し、HAVING句はGROUP BY句が実行された後にグループを制限します。
  • WHERE句はSELECT、UPDATE、DELETE、INSERTで利用できますが、HAVINGはSELECT文でのみ利用できます。

GROUP BYとJOINの例

正規化されたリレーショナルデータベースは、複雑なテーブルを小さなテーブルに分割します。 これにより、データの冗長性や不整合性を排除し、情報の損失がないようにすることができます。

上の例では、EmployeeとDepartmentは共通のカラムDeptIDを使って結合されています。

上記の例では、JOINとGROUP BYの両方の句を1つのクエリで使用しています。

GROUP BYと他の句との比較

GROUP BYとDISTINCTの比較

DISTINCTはカラムに存在するユニークな値を返し、GROUP BYはユニーク/ユニークなアイテムを集約した結果のカラムを返します。 次の例では、dept テーブルの DISTINCT 値を見ることができます。

GROUP BYとORDER BYの比較

ORDER BYは昇順と降順でソートされたアイテムを返すのに対し、GROUP BYは結果の集約カラムでユニークなアイテムを返します。 次の例では、ORDER BYまたはソートされた給与テーブルを見ることができます。

Hands-on Practice Assignment

テーブル名: 書籍

カラム名 ISBN, Title, Publication Date, Price, Publisher

以下のステートメントに対するSQLクエリを書き、コメントで答えを共有してください。

  • 「経営」カテゴリに含まれる書籍の数を決定する。
  • 各カテゴリの平均書籍価格を決定する。
  • 各カテゴリで最も安価な書籍の価格を列挙する。
  • ソース。

    結論

    おめでとうございます!このチュートリアルを最後までやり遂げましたね!

    このチュートリアルでは、GROUP BY句とHAVING句について多くの詳細を説明しました。 GROUP BY句とHAVING句とは何か、SQLのHAVING句とWHERE句の比較、JOINによるGROUP BY、GROUP BYとDISTINCTやORDER BYとの比較などを例を挙げて学びました。

    願わくば、GROUP BYとHAVING句のコンセプトを利用して、ご自身のデータセットを分析できるようになっていただきたいと思います。 このチュートリアルを読んでいただきありがとうございました!

    SQLについてもっと学びたい方は、DataCampのIntermediate SQLcourseを受講してみてください。

    投稿ナビゲーション

    カナダ・デー
    ASDの定義と種類 – Adana Foundation

    コメントを残す コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    最近の投稿

    • Firebush (日本語)
    • 9 Best Dog Vitamins And Supplements For Enhanced Health
    • 2021年のCDレート予測。 金利はおそらく低水準で推移するが、年の後半には上昇するかもしれない
    • 慢性骨盤痛症候群と前立腺炎:症状、診断と治療
    • ミックスベリー・クリスプ
    • Low-Carb Chocolate Pudding Recipe
    • 1歳を過ぎた母乳育児のメリット
    • Is it Safe to Dump Coffee Grounds Down the Sink|Atomic Plumbing
    • Cool-Down After Your Workout (日本語)
    • Our Work (日本語)

    メタ情報

    • ログイン
    • 投稿フィード
    • コメントフィード
    • WordPress.org

    アーカイブ

    • 2021年3月
    • 2021年2月
    • 2021年1月
    • 2020年12月
    • DeutschDeutsch
    • NederlandsNederlands
    • EspañolEspañol
    • FrançaisFrançais
    • PortuguêsPortuguês
    • ItalianoItaliano
    • PolskiPolski
    • 日本語日本語
    ©2021 Info Cafe | WordPress Theme by SuperbThemes.com