グループ化されたクエリでの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 の遅延読み込み属性パターンに関する簡単な説明

推薦する

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

JavaScript 関数のカリー化

目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...

cocoscreatorプレハブの詳しい説明

目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...

ElementUI el-select の過剰なデータに対する解決策についての簡単な説明

目次1. シナリオの説明2. 解決策オプションが多すぎる el-select コンポーネントの解決策...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

Docker-compose におけるdepends_on 順序問題を解決する方法についての簡単な説明

コンテナをソートするためにdepends_onを使用しても、コンテナ間の依存関係の問題は完全には解決...

jsはショッピングウェブサイトの商品の拡大鏡効果を実現します

この記事では、ショッピングサイトの商品の拡大鏡効果を実現するためのjsの具体的なコードを紹介します。...

MySQL の自動増分 ID (主キー) が不足した場合の解決策

MySQL で使用される自動インクリメント ID には多くの種類があり、各自動インクリメント ID ...

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

JavaScript 操作要素の例

操作要素の詳細については、前回の記事を参照してください。JavaScript WebAPI、DOM、...

Chromeの最小フォントサイズ制限12pxに対する最終的な解決策

ウェブサイトを作成するユーザーの多くが、このような問題に遭遇すると思います。Chrome のデフォル...

フロントエンドアプリケーションのjenkins+gitlab+nginxデプロイメント

目次関連する依存関係のインストールドッカーDockerでJenkinsをインストールするDocker...

ES6のシンボルデータ型について詳しく説明します

目次シンボルデータタイプシンボルが表示される理由シンボルの特徴シンボルの応用rbオブジェクトにupメ...

Reactは二次的連鎖効果(階段効果)を実現する

この記事では、二次リンク効果を実現するためのReactの具体的なコードを参考までに共有します。具体的...