MySQLデータのグループ化の詳細な説明

MySQLデータのグループ化の詳細な説明

グループを作成

グループ化は、SELECT ステートメントの GROUP BY 句で設定されます。

例:

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;

グループ化

  • GROUP BY 句には任意の数の列を含めることができ、ネストされたグループ化が可能になり、データのグループ化をより詳細に制御できます。
  • GROUP BY 句でグループをネストすると、データは最後に指定されたグループ化で集計されます。つまり、グループ化を作成すると、指定されたすべての列が一緒に計算されます。 (そのため、個々の列からデータを取得することはできません)。
  • GROUP BY 句にリストされている各列は、検索列または有効な式 (集計関数ではない) である必要があります。 SELECT 句で式を使用する場合は、GROUP BY 句で同じ式を指定する必要があります。別名は使用できません。
  • 集計計算ステートメントを除き、SELECT ステートメント内のすべての列は GROUP BY 句で指定する必要があります。
  • グループ化列に NULL 値がある場合、グループとして NULL が返されます。列に NULL 値を持つ行が複数ある場合は、それらはグループ化されます。
  • GROUP BY 句は、WHERE 句の後、ORDER BY 句の前に記述する必要があります。

フィルターグループ

少なくとも 2 つの注文があるすべての整形外科部門を一覧表示する場合は、個々の行ではなく、完全なグループ化に基づいてデータをフィルター処理する必要があります。

HAVINGを使うことができます

SELECT cust_id, COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*) >= 2;

HAVING と WHERE の違いは、WHERE はデータのグループ化の前にフィルタリングするのに対し、HAVING はグループ化の後にフィルタリングすることです。もちろん、両方を同じ文に出現させることもできます。

価格が10ドル以上の製品を2つ以上持っているサプライヤーをリストします

SELECT vend_id, COUNT(*) AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT(*) >= 2;

上位2つの製品を持つサプライヤーをリストアップする

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id HAVING COUNT(*) >= 2;

グループ化と並べ替え

注文するグループ化
出力のソート行をグループ化します。しかし、出力はグループの順序どおりにならない可能性がある
どの列でも使用可能(選択されていない列でも)選択列または式列のみを使用でき、各選択列式を使用する必要があります。
必ずしも必要ではない集計関数で列(式)を使用する場合は、

合計注文金額が50以上の注文の注文番号と合計注文金額を取得します。

SELECT order_num, SUM(quantity*item) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity*item_price) >= 50;

合計注文金額で出力を並べ替えると

SELECT order_num, SUM(quantity * item_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity * item_price) >= 50 ORDER BY ordertotal;

SELECT句の順序

条項例示する使用する必要があるか
選択返される列または式はい
からデータを取得するテーブルテーブルからデータを選択する場合にのみ使用されます
グループ化グループの説明グループごとに集計を計算する場合にのみ使用されます
どこ行レベルのフィルタリングいいえ
持つグループレベルのフィルタリングいいえ
注文する出力のソート順いいえ
制限取得する行数いいえ

以上がMySQLデータのグループ化の詳細な説明です。MySQLデータのグループ化の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql のグループ化と各グループからランダムに 1 つのデータを取得する
  • 各グループの最新データを取得するためにMySQLベースのグループを実装する
  • MySQL サブクエリとグループ化されたクエリ
  • MySQL グループ化クエリと集計関数
  • MySql Group Byは複数のフィールドのグループ化を実装します
  • 上位Nを見つけるためのMySQLグループソートの詳細な説明
  • MySQL でグループ化した後、各グループの最大値を取得する詳細な例
  • Mysqlはグループによるソートを使用する

<<:  Xmeter APIインターフェーステストツールの使用状況の分析

>>:  マークアップ言語 - 画像の置き換え

推薦する

MySQL マスター/スレーブ データベース同期構成と一般的なエラー

アクセス回数が増えると、時間のかかるデータベース読み取り操作では、データベースへの負荷を軽減するため...

JavaScript における変数と関数の昇格の詳細な例

js 実行字句解析フェーズ: 形式パラメータ解析、変数宣言解析、関数宣言解析の 3 つの部分が含まれ...

Dockerfile を使用して nginx イメージを構築する例

Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...

優れたユーザー エクスペリエンス デザイナーが行うべき 5 つのこと (画像とテキスト)

この記事は、@C7210 によって翻訳されたブログ「Usability Counts」からの翻訳です...

Linux で TCP 接続の最大数をテストする方法

序文TCP サーバの最大同時接続数に関して、「ポート番号の上限が 65535 であるため、TCP サ...

HTMLフレームワーク_Powernode Javaアカデミー

1. フレームワークブラウザのドキュメント ウィンドウには 1 つの Web ページ ファイルしか表...

MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

あまり多くのコードを書かずに、ハイパーリンクを使ってシンプルで美しいカスタムチェックボックスを実装できます。

今日ふと、HTML でチェックボックスのスタイルを変更できる範囲が限られていることと、チェックボック...

純粋な CSS でフォ​​ーム検証を実装するためのサンプル コード

日常業務において、フォームの検証は非常に一般的な設計要件です。ログイン ボックスや登録ボックス、アン...

LinuxでLVMディスクを拡張する詳細な手順

1.ハードディスクを追加する2. パーティションの状態を確認します: fdisk -l 3. パーテ...

CSS スティッキーフッタークラシックレイアウトの実装

スティッキーフッターレイアウトとは何ですか?一般的な Web ページのレイアウトは、通常、ヘッダー部...

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

CentOS 6 ZLMediaKit のコンパイルとインストール分析

Centos6にZLMediaKitをインストールするZLMediaKit の作者は Ubuntu ...

ウェブページのテキストデザインは、服を着た賢い女の子のようであるべきだ

<br />「この世に醜い女性はいない、あるのは怠惰な女性だけだ」これは女性の美のバイブ...