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 の類似タグと属性の違いの詳細な説明

推薦する

Vue2.0+ElementUI+PageHelperで実装されたテーブルページング機能

序文最近、いくつかのフロントエンド プロジェクトに取り組んでおり、ページにいくつかのテーブルを表示す...

MySQL スケジュールバックアップタスクの簡単な分析

導入実稼働環境では、データの損失を回避するために、通常、データベースは定期的にバックアップされます。...

CSS を使用して複数の方法で等幅レイアウトを実装するサンプルコード

この記事で説明する等幅レイアウトでは、純粋な CSS を使用して、要素の幅を手動で設定することなく、...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

Angularルーティングサブルートの詳細な説明

目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...

HTML ページに画像を挿入し、マップ インデックスを追加する方法の例

1. WEBでサポートされている画像形式: GIF: 256色を保存でき、透明色をサポートし、アニメ...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

プライベートイメージウェアハウスを構築するためのDockerレジストリの実装方法

マイクロサービスのイメージは、保存用に Docker リポジトリにアップロードされます。一般的に使用...

Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル

目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...

Js でオブジェクトのディープ オブジェクトを安全に取得するメソッドの例

目次序文文章パラメータ例Lodash 実装:トーキー機能: castPath関数: stringTo...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

CSS が複数のクラスに一致する方法のサンプルコード

CSSは複数のクラスにマッチする次の HTML タグ li、クラスはオープン スタイルです。私の要件...