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 テーブルタグチュートリアル (13): 内部境界スタイル属性ルール

RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...

PrometheusはGrafanaディスプレイを使用してMySQLを監視します

目次Prometheusはエクスポーターを介してMySQLを監視し、Grafanaチャートで表示しま...

CentOS7.5 MySQLのインストールチュートリアル

1. まずシステムにmysqlがインストールされているかどうかを確認します rpm -qa | gr...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

WeChatアプレットが検索ボックス機能を実装

この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...

Ubuntu 14.04 で QT5 をインストール、設定、アンインストールするための詳細な手順

1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

jQueryアニメーションを理解するのに役立つ記事

目次1. 要素の表示と非表示を制御する show() hide() 2. 要素の透明度を制御する f...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

MySQL 8.0.13 手動インストールチュートリアル

この記事では、MySQL 8.0.13の手動インストールチュートリアルを参考までに紹介します。具体的...

Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案

スワップを無効にするサーバーがデータベース サービスまたはメッセージ ミドルウェア サービスを実行し...

純粋なCSSを使用してスクロールシャドウ効果を実現します

端的に言うと、スクロール可能な要素には非常によくある状況があります。通常、スクロールすると、要素が現...

Windows Server 2016 に MySQL 5.7.19 の解凍バージョンをインストールするための詳細なチュートリアル

MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...

Reactの親コンポーネントと子コンポーネント間のデータ転送の詳細な説明

目次1. 親コンポーネントが子コンポーネントにデータを渡す1.1. 親コンポーネントコード1.2. ...