グループ化されたクエリでのGROUP BYの使用とSQL実行順序の説明

グループ化されたクエリでのGROUP BYの使用とSQL実行順序の説明

SQL では、GROUP BY は SELECT の結果のデータをグループ化するために使用されます。GROUP BY を使用する前に、いくつかの重要なルールを知っておく必要があります。

  • 1. GROUP BY 句には任意の数の列を含めることができます。つまり、グループ内でデータをグループ化できるため、データのグループ化をより詳細に制御できます。
  • 2. GROUP BY 句で複数のグループを指定した場合、データは最後に指定したグループで集計されます。
  • 3. GROUP BY 句にリストされている各列は、検索列または有効な式 (集計関数ではない) である必要があります。 SELECT で式を使用する場合は、GROUP BY 句で同じ式を指定する必要があります。エイリアスは使用できません。
  • 4. 集計計算ステートメントを除き、SELECT ステートメントの各列は GROUP BY 句で指定する必要があります。
  • 5. グループ化列に NULL 値がある場合、グループとして NULL が返されます。 NULL 値を持つ行が複数ある場合は、それらはグループ化されます。
  • 6. GROUP BY 句は、WHERE 句の後、ORDER BY 句の前に配置する必要があります。

フィルターグループ

グループ化のための HAVING 句の過剰な使用。 HAVING 句はすべての WHERE 操作をサポートします。 HAVING と WHERE の違いは、WHERE は行をフィルタリングするのに対し、HAVING はグループをフィルタリングするために使用されることです。

WHERE と HAVING の違いを理解するもう 1 つの方法は、WHERE はグループ化の前にフィルタリングするのに対し、HAVING はグループ化後にグループごとにフィルタリングすることです。

グループ化と並べ替え

通常、GROUP BY 句を使用する場合は、ORDER BY 句も使用する必要があります。これが、データが正しくソートされることを保証する唯一の方法です。

SQL SELECT ステートメントの実行順序は次のとおりです。

  • 1. from 句はさまざまなデータ ソースからデータを組み立てます。
  • 2. where 句は指定された条件に基づいて行をフィルタリングします。
  • 3. group by 句はデータを複数のグループに分割します。
  • 4. 計算には集計関数を使用します。
  • 5. グループをフィルタリングするには、having 句を使用します。
  • 6. すべての式を計算します。
  • 7. order by を使用して結果セットを並べ替えます。
  • 8. コレクション出力を選択します。

例を挙げてみましょう。

候補者名、最大(合計スコア)をtb_Gradeから最大合計スコアとして選択します
候補名がnullではない
最大(合計スコア)が600を超える候補者名でグループ化
合計スコアの最大値で並べ替え

上記の例では、SQL ステートメントは次の順序で実行されます。

  • 1. まず、FROM句を実行してtb_Gradeテーブルからデータソースデータを組み立てます。
  • 2. WHERE句を実行して、tb_Gradeテーブル内のNULL以外のすべてのデータをフィルタリングします。
  • 3. GROUP BY句を実行して、tb_Gradeテーブルを「生徒名」列でグループ化します。
  • 4. max()集計関数を計算し、「合計スコア」に従って合計スコアの最大値を見つけます。
  • 5. HAVING 句を実行して、合計スコアが 600 ポイントを超えるコースをフィルターします。
  • 6. ORDER BY 句を実行し、最終結果を「最大スコア」で並べ替えます。

注意: join と on が使用されている場合、where の前に on が実行され、次に join が実行され、最後に where が実行されます。

添付ファイル:

MySQL の集計関数:

  • 1. count()は列内の行数を返します
  • 2. avg()は列の平均値を返します
  • 3. max()は列の最大値を返します
  • 4. min()は列の最小値を返します
  • 5. sum()は列の合計を返します
  • 6. distinctは重複した値を削除します

注: avg() は null 値の行を無視し、count(*) はすべての行をカウントし、count(column) は null 値の行を無視します。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • SQL での Group By の使用に関する詳細なチュートリアル
  • Laravel は Eloquent モデル グループ クエリを実装し、各グループの数を返します groupBy()
  • Django ORM 集計クエリとグループクエリの実装の詳細
  • MySQLグループクエリGroup Byの実装原理の詳細な説明
  • MySQL のグループクエリと結合クエリステートメントの詳細な説明
  • SQL グループクエリの問題
  • Oracle グループクエリにおける group by の使用ルールの詳細な説明

<<:  Linux 上での MySQL データベースのインストールと Java プロジェクトの構成に関する詳細なグラフィック説明

>>:  JavaScript の遅延読み込み属性パターンに関する簡単な説明

推薦する

MySQL ストアド プロシージャのクエリ コマンドの概要

以下のように表示されます。 mysql.proc から名前を選択します (db='データベー...

Webpack プロジェクトでローダー プラグインをデバッグする方法

最近、webpackの使い方を学んでいたときに、webpack-replace-loaderの設定正...

Linux でのインストール中にソフトウェア パッケージの依存関係レポートに関連する問題の解決策

目次背景1) yumのkeepchche機能を有効にする: 方法1 2) yum-utils ソフト...

MySQLで行または列をソートする方法

方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...

MySQLデータベースのストアドプロシージャとトランザクションの違い

トランザクションは、複数の SQL ステートメントの原子性、つまり、それらが一緒に完了するか、一緒に...

HTMLページでチェックボックスを操作する方法

チェックボックスは Web ページで非常によく使用されます。e コマースの Web サイトでもプラッ...

Oracle の開閉の 4 つのモード

>1 データベースを起動するcmd コマンド ウィンドウで、「sqlplus」を直接入力して ...

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios...

Facebookの情報アーキテクチャの分析

<br />原文: http://uicom.net/blog/?p=762 Faceb...

Vue はトークンを取得してトークン ログインのサンプル コードを実装します

ログイン認証にトークンを使用する考え方は次のとおりです。 1. 初めてログインする場合、フロントエン...

Gogs+Jenkins+Docker による .NetCore ステップの自動デプロイ

目次環境説明DockerのインストールゴグのインストールDocker で .NetCore サービス...

MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル

圧縮パッケージのインストールは、mysql-5.7 以降、大幅に変更されました。この記事では、mys...

Dockerfile を使用して Docker でイメージを構築する方法

イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...

JSON.stringify のさまざまな用途のまとめ

序文json を使用したことがある人なら、オブジェクトを文字列化してからバックエンドに送信するのが一...

Nodeはバックエンドの実装手順を素早く構築します

1. まず、node、express、express-generator をインストールします (4...