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 ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

メンテナンスしやすい CSS コードを書くための 5 つのガイドライン

1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結し...

MySQL ステートメントに一重引用符またはバックスラッシュを含む値を挿入する方法

序文この記事では主に、シングルクォートやバックスラッシュを含む値を挿入するMySQLステートメントに...

Docker マイクロサービス用の ETCD クラスターの構築に関する詳細なチュートリアル

目次etcdの機能etcdが独自の高可用性クラスタを構築するには、主に3つの形式があります。今回構築...

ECMAScriptにおけるプリミティブ値と参照値の詳しい説明

目次序文動的プロパティとは何ですか?値のコピー値の種類を決定する要約する序文これは JavaScri...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

CocosCreator 学習モジュールスクリプト

Cocos Creator モジュラースクリプトCocos Creator を使用すると、コードを複...

Ubuntu での MySQL および MySQL Workbench のインストール チュートリアル

Ubuntu に jdk をインストールする: [リンク] UbuntuにEclipseをインストー...

JavaScript のマクロタスクとマイクロタスクの詳細

目次1. マイクロタスクとは何ですか? 2. マクロタスクとは何ですか? 3. 事例3.1 結論4....

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

nginx の http リクエスト処理の各段階の詳細な分析

nginx の HTTP モジュールを作成する場合、リクエスト開始時のアクセス許可の有無、コンテンツ...

純粋なHTML+CSSでタイピング効果を実現

この記事は主に、一定の参考値を持つ純粋な HTML + CSS によって実現されるタイピング効果を紹...