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

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

推薦する

Helloダイアログボックスのデザイン体験の共有

「どうしたの?」特定の種類のダイアログ ボックスに慣れていない限り、ダイアログ ボックスが表示された...

Vant+postcss-pxtoremはブラウザ適応機能を実装します

Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...

Dockerのセキュリティについて Docker-TLS暗号化通信の問題

目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

Vue ページ内の公開マルチタイプ添付画像アップロード領域と適用可能な折りたたみパネル (サンプルコード)

フロントエンド プロジェクトでは、添付ファイルのアップロードは非常に一般的な機能であり、ほぼすべての...

Ubuntu 20.04の新バージョンでルートユーザーを使用してシステムにログインする方法の詳細なチュートリアル

Ubuntu 20.04 では、デフォルトで root ログインが有効になっていないため、デスクトッ...

MySQL がデフォルトの分離レベルとして繰り返し読み取りを選択する理由

目次Oracle 分離​​レベルMySQL 分離レベル要約する多くの読者は、MySQL のトランザク...

TypeScript 名前空間のマージの説明

目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...

imgタグ間のスペースの問題の詳細な説明

IMG タグの基本分析 HTML5 では、img タグには 4 つの要素があります。 (1) src...

CSS3を使用してヘッダーアニメーション効果を作成する

Netease Kanyouxi公式サイト(http://kanyouxi.163.com/)(棚...

Vue2とVue3のライフサイクルの比較の詳細な理解

目次サイクル比較使用法要約するサイクル比較ヴュー2ヴュー3作成前設定作成された設定マウント前マウント...

CSS3 における擬似クラスの一般的な使用法の詳細な説明

before/after 疑似クラスは、要素内に 2 つの追加タグを挿入するのと同じです。最も適した...

MySQL データベース グループ クエリの group by ステートメントの詳細な説明

1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...

MySQLスケーラブル設計の基本原則

目次序文1. スケーラビリティとは何ですか?スケールアウトの利点:スケールアウトのデメリット:スケー...