SQL 集計、グループ化、並べ替え

SQL 集計、グループ化、並べ替え

1. 集計クエリ

データベースにアクセスするとき、テーブル内のデータの列に対して、合計、最大値、最小値、平均値などの統計的な要約を実行する必要があることがよくあります。このとき、集計関数を使用する必要があります。いわゆる集計関数は、要約に使用する関数です。集計とは、複数の行を 1 つの行に集約することです。

一般的な集計関数は次のとおりです。

1. COUNT関数

count関数は、テーブル内の行数をカウントするために使用されます。

たとえば、すべてのデータの行数をカウントするには、次のようにします。

SELECT COUNT(*) FROM users;

注: COUNT(*) は NULL 値を含む行の数を取得します。NULL 値を含む行を除外する場合は、count(フィールド名) を使用して NULL 値以外の行の数を取得できます。

SELECT COUNT(user_name) FROM users;

2. SUM関数

任意の列のデータの合計を計算するために使用されます。

たとえば、すべてのユーザーの年齢の合計を計算するには、次のようにします。

users から sum(age) を選択します。

3. AVG関数

任意の列のデータの平均を計算するために使用されます。

たとえば、すべてのユーザーの平均年齢を計算するには、次のようにします。

usersからAVG(age)を選択します。

4. MAX関数とMIN関数

MAX関数は任意の列のデータの最大値を計算するために使用され、 MIN関数は任意の列のデータの最小値を計算するために使用されます。

たとえば、すべてのユーザーの最大年齢と最小年齢を計算するには、次のようにします。

users から MAX(age),MIN(age) を選択します。

注: MAX 関数と MIN 関数はほぼすべてのデータ型の列に適用できますが、SUM 関数と AVG 関数は数値型の列にのみ適用できます。

2. グループクエリ

集計関数は、テーブル内のすべてのデータの統計を要約するために使用されます。GROUP GROUP BY句を使用してデータを複数のグループに分割し、統計の要約を実行することもできます。

構文形式:

SELECT <フィールド名>,... FROM <テーブル名> GROUP BY <フィールド名>,...;

たとえば、ユーザーを都市別にグループ化し、各都市のユーザーの合計をカウントします。

SELECT city,count(*) FROM users GROUP BY city;
+-------+----------+
| 都市 | カウント(*) |
+-------+----------+
| 北京 | 60 |
| 上海 | 45 |
| NULL | 80 |
| 済南 | 12 |
+-------+----------+

結果から、 NULL値を持つフィールドもグループとしてリストされることがわかります。除外したい場合は、 WHERE句を使用できます。

SELECT city,count(*) FROM users WHERE city IS NOT NULL GROUP BY city;

3. 集計結果をフィルタリングする

GROUP BY句を使用してグループ化する場合、グループ化された集計結果をフィルタリングする必要がある場合があります。最初にWHERE句の使用を考えるかもしれませんが、実際はそうではありません。代わりに、 HAVING句を使用します。 HAVINGの役割はWHEREの役割と同じで、どちらもフィルタリングですが、 WHEREはデータ行をフィルタリングするために使用され、 HAVINGグループ化された集計結果をフィルタリングするために使用されます。

たとえば、ユーザーを都市別にグループ化し、40 人を超えるユーザーを含むグループをフィルターします。

SELECT city,COUNT(*) AS num FROM users GROUP BY city HAVING num>40;

別の例:ユーザーを都市別にグループ化し、ユーザーの平均年齢が 25 歳未満のグループを除外します。

SELECT city,AVG(age) AS avg_age FROM users GROUP BY city HAVING avg_age<25;

1. HAVING句の要素

HAVING 句で使用できる要素には 3 つの種類があります。

  • 絶え間ない
  • 集計関数
  • GROUP BY句で指定された列名(つまり、集計キー)

4. クエリ結果を並べ替える

SQLクエリでソートを使用して、データを昇順 ( ASC ) または降順 ( DESC ) で並べ替えることができます。デフォルトは昇順です。

構文形式:

SELECT <フィールド名>,... FROM <テーブル名> ORDER BY <フィールド名> ASC/DESC,...;

たとえば、ユーザー テーブル内のレコードを年齢の昇順で並べ替えるには、次のようにします。

SELECT * FROM users ORDER BY age ASC;

注意:昇順の場合は ASC を省略できますが、降順の場合は DESC が必要です。

たとえば、ユーザー テーブル内のレコードを年齢の降順で並べ替えるには、次のようにします。

SELECT * FROM users ORDER BY age DESC;

1. 複数のソートキーを指定する

ORDER BY句では複数のソート キーを指定できます。たとえば、 usersテーブル内のレコードを年齢の降順、登録時間の昇順でソートするには、次のようにします。

SELECT * FROM student ORDER BY age DESC,register_time ASC;

複数のフィールドを並べ替える場合は、「,」で区切ります。

2. 集計関数を使ったソート

ORDER BY句では、集計関数の結果をソートに使用することもできます。

たとえば、ユーザーを都市別にグループ化し、各グループのユーザー数で並べ替えるには、次のようにします。

SELECT city,COUNT(*) AS num FROM users GROUP BY city ORDER BY num;

SQL の集計、グループ化、並べ替えに関するこの記事はこれで終わりです。SQL の集計、グループ化、並べ替えに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

<<:  角度コンテンツ投影の詳細な説明

>>:  HTML の類似タグと属性の違いの詳細な説明

推薦する

HTML マルチメディア アプリケーション: Web ページにフラッシュ アニメーションと音楽を挿入する

1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...

高度な CSS の 3 つの方法を使用して複数行の省略を実装するサンプル コード

序文これは古くからの要望ですが、オンラインで解決策を探している人はまだ多く、特に検索結果の上位にラン...

HTML でフレームセット タグを使用するチュートリアル

フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...

HTML で JavaScript を使用する

<script> タグHTML5では、スクリプトには次の属性があります: async、d...

Dockerでプロジェクトを実行する方法

1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...

MySQL データベース アカウントの作成、認証、データのエクスポートおよびインポート操作の例

この記事では、MySQL データベースでのアカウントの作成、認証、データのエクスポートおよびインポー...

CocosCreatorでスワイプした位置にテクスチャを表示する方法

目次1. プロジェクト要件2. 文書の内容3. プロジェクト例4. プロジェクトコード1. プロジェ...

Docker イメージのインポートとエクスポートのコード例

Dockerイメージのインポートとエクスポートこの記事では、移行、バックアップ、アップグレードなどの...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...

HTMLで下線を設定するには?HTMLでテキストに下線を付ける方法

HTML で下線を引くには、以前はテキストを <u></u> タグで囲む必要...

React Router で履歴リダイレクトを使用する方法

react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...

Windows システムでの MySQL 8.0.21 インストール チュートリアル (図とテキスト)

インストールの提案: インストールには .exe を使用せず、圧縮パッケージを使用してください。これ...

CSS 表示テーブルの適応的な高さと幅の問題の解決策

定義と使用法display プロパティは、要素が生成するボックスのタイプを指定します。例示するこの属...