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

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

推薦する

ReactでのDOM操作の実装

目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...

HTMLの表のtbodyは上下左右にスライドできます

テーブル ヘッダーが固定されている場合は、それを 2 つのテーブルに分割する必要があります。1 つの...

Vuex全体のケースの詳細な説明

目次1. はじめに2. 利点3. 使用手順1. Vuexをインストールする2. Vuexを参照する3...

ツールキット: Bootstrap よりも強力なフロントエンド フレームワーク

注: 現在、最も人気のフロントエンド フレームワークは Bootstrap と Foundation...

Linux におけるゼロコピー技術の使用に関する簡単な分析

この記事では、Linux におけるいくつかの主要なゼロコピー テクノロジと、ゼロコピー テクノロジを...

VUE レンダリング機能の使い方と詳細な説明

目次序文レンダリングの役割レンダリング機能の説明レンダリングとテンプレートの違いレンダリング例要約す...

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

標準的なHTMLの書き方は、Dreamweaverによって自動的に生成されるものとは異なります。

コードをコピーコードは次のとおりです。 <!--doctype はドキュメント タイプ htm...

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...

大きな MySQL テーブルに列を追加する方法

質問は https://www.zhihu.com/question/440231149 から参照さ...

HTMLにスクリプトを追加する2つの方法と注意点

HTML に <script> スクリプトを追加する方法: 1. HTMLにJavaSc...

Dockerコンテナ監視の原理とcAdvisorのインストールおよび使用方法

本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...

サイトマップをウェブページの下部に配置するメリットと例

以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...

Mysql論理アーキテクチャの詳細な説明

1. 全体的なアーキテクチャ図他のデータベースと比較すると、MySQL は、そのアーキテクチャがさま...

コメント付きのスネークゲームを実装する js

この記事の例では、スネークゲームを実装するためのjsの具体的なコードを参考までに共有しています。具体...