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インターフェーステストツールの使用状況の分析

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

推薦する

HTML における iFrame タグの 2 つの使用法

最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...

超シンプルな QPS 統計手法 (推奨)

過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

MySQLトリガーの使用と理解

目次1. トリガーとは何ですか? 2. トリガーを作成するトリガーを作成するための構文は次のとおりで...

Vueはビデオ再生を実装するためにビデオタグを使用します

この記事では、ビデオタグを使用してビデオ再生を実装するVueの具体的なコードを参考までに共有します。...

レスポンシブWebデザイン学習(3) - モバイルデバイスでのWebページのパフォーマンスを向上させる方法

序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...

js に基づいて大きなファイルのアップロードとブレークポイントの再開を管理する方法

目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...

Docker に Zookeeper を素早くインストールする方法の詳細なチュートリアル

Docker で Zookeeper を素早くインストール会社を変わってから長らくZookeeper...

CSS3 レーダースキャンマップのサンプルコード

CSS3 を使用して、クールなレーダースキャン画像を実現します。 コード上で直接: // インデック...

シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明

1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...

MySQLは、統計クエリを最適化するために、sum、case、whenを巧みに使用します。

私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...

テキストエリアのテキスト入力領域に改行を実装する方法

textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...

Vueでパスワードの表示と非表示機能を実装するアイデアを詳しく解説

効果: アイデア:入力タイプ属性を使用して、タイプ値がテキストの場合はパスワードを表示し、タイプ値が...

tomcat をインストールし、Linux で Web サイトを展開します (推奨)

jdk をインストールします: Oracle 公式ダウンロード https://www.oracl...

NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...