SQL文でのgroup byの使用について簡単に説明します

SQL文でのgroup byの使用について簡単に説明します

1. 概要

Group by は、by の後の規則に従ってデータをグループ化することを意味します。いわゆるグループ化とは、データ セットをいくつかの「小さなグループ」に分割し、それに応じて処理することを意味します。

2. 文法規則

SELECT 列名、集計関数(列名)
テーブル名から
WHERE 列名 演算子 値
GROUP BY 列名

3. 例

次のような注文表があります。

各ユーザーの注文の合計金額をカウントしたい場合は、group by を使用します。

Customer を選択し、合計 (OrderPrice) を total_price として Customer 別にグループ化します。

次の結果セットが表示されます。
ブッシュ 2000
カーター 1700
アダムス 2000
実際には、データは最初に顧客別にグループ化され、次に各グループの orderPrice の合計が計算され、最後に各グループが行として表示されます。
group by ステートメントを削除すると、次の結果が表示されます。

すべての価格を合計して最終的な合計額を算出することになりますが、これは私たちの予想とは異なります。

4. 注記

次のような表示が出た場合:

カテゴリを選択、数量の合計として合計(数量)、要約から A、カテゴリ別にグループ化、カテゴリ別に並べ替え、降順

選択したフィールドはグループ化の基準として group by の後に含まれているか、集計関数に含まれている必要があるため、エラーが報告されます。そうしないと、集計列が行と一致しません。
したがって、次のものを使用できます。

カテゴリを選択し、合計(数量) AS Aグループからの数量の合計をカテゴリ別に並べ替え、合計(数量)で降順で並べ替え

複数の列でグループ化する場合は、group by all 構文を使用できます。

顧客、注文日、注文価格の合計を選択し、すべての顧客、注文日でグループ化します。

5. whereとhavingの違い

where は、クエリのグループ化の前に where 条件を満たさない行を削除します。つまり、グループ化の前にデータをフィルターします。where 条件には集計関数を含めることはできません。
Having は、条件を満たすグループをフィルタリングすること、つまりグループ化後にデータをフィルタリングすることです。having ステートメントには集計関数が含まれることが多く、特定のグループをフィルタリングするために having が使用されます。
例:

Customer を選択し、合計価格として (OrderPrice の合計)、合計価格が 1700 を超える Customer でグループ化します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • この記事では、データベースでグループ化を使用する方法を説明します。
  • 単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法
  • Pymongo で group by を使用する方法のチュートリアル

<<:  自動開始および停止コマンドを適用するには、Docker サービスを再起動します (推奨)

>>:  vscodeを使用してReact Native開発環境を構築する方法を教えます

推薦する

言及すべき8つのMySQLの落とし穴を共有する

MySQL はインストールが簡単で、高速で、豊富な機能を備えています。これはオープンソース運動のベン...

DockerにRocketMQをインストールするための実装手順

目次1. 画像を取得する2. ブローカーサーバーを作成する3. ブローカーを作成する4. Rocke...

Dockerコンテナが起動直後に終了する問題を解決する

最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたとこ...

ElementuiはデータをxlsxとExcelテーブルにエクスポートします

最近、Vue プロジェクトについて知り、ElementUI でデータを xlsx および Excel...

jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

序文:フロントエンド: jq+h5 で 9 グリッドのダイナミック効果を実現バックエンド: thin...

MySQLで重複データを削除する詳細な例

MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...

Dockerはコンテナにポートを動的に公開します

コンテナのIPアドレスを表示するdocker examine <コンテナ名またはID> ...

MySQL初心者のための基本操作のまとめ

図書館運営クエリ1.SHOW DATABASE; ----すべてのデータベースを照会する2. SHO...

Svelte の Defer Transition を Vue で実装する方法

最近、Rich Harris の <Rethinking Reactivity> ビデオ...

MySQL 5.7 生成列の使用例の分析

この記事では、例を使用して、MySQL 5.7 で生成された列の使用方法を説明します。ご参考までに、...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

Vue はコンポーネント間の通信をどのように実装しますか?

目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...

MySQL の連結で複数の一重引用符と三重引用符を使用する際の問題

文字列を動的に連結する場合、文字連結を使用することが多いです。次のような連結の引用符の意味がわかりま...

vue3を使用して人間と猫のコミュニケーションアプレットを実装する

目次序文プロジェクトを初期化するデザインコードの実装オンデマンドロードオーディオを再生録音長押しイベ...