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

推薦する

MySQL マスタースレーブレプリケーションの原理と注意点

前面に書かれた最近、Mycat で特別なトピックを書いています。最近、多くの友人が面接に出かけている...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

MySql でデータの重複挿入を回避する 3 つの方法

序文MySql で主キーの競合または一意キーの競合が発生した場合、挿入方法に応じてエラーを回避するた...

163 メールボックスログインボックスインタラクティブデザインの改善体験と共有

LOFTER のコンテストで、ログイン ボックスを再設計できると言及されているのを見ました。過去 2...

Linux CentOS 6.5 のアンインストール、tar、および MySQL のインストールチュートリアル

システム提供のMySQLをアンインストールする1. MySQLがシステムにインストールされているかど...

ジョセフリング問題を解決する 3 つの JavaScript メソッド

目次概要問題の説明循環リンクリスト順序付き配列数学的再帰要約する概要ジョセフ・リング問題は、ジョセフ...

Linux で MySQL 5.7.19 をアンインストールする方法

1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...

MySQLのFreeListメカニズムの詳細な説明

1. はじめにMySQL が起動すると、BufferPool が初期化されます。クエリ操作を実行する...

Vue は左右のスライド効果のサンプルコードを実装します

序文個人の実際の開発で使用した効果問題を、今後の開発やレビューに役立てるためにまとめています。他の人...

JavaScript JSON.stringify() の使用法の概要

目次1. 使用方法1. 基本的な使い方2. 2番目のパラメータ - フィルター3. 3番目のパラメー...

MySQL における IF()、IFNULL()、NULLIF()、および ISNULL() 関数の使用に関する詳細な説明

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

すべてのブラウザに対応したデータURIとMHTMLの完全なソリューション

データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...

ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

私がこれまで携わってきた多くのプロジェクトでは、基本的に避けられない悪循環がありました。それは、ホー...

MySQL の主キーとトランザクションの詳細な説明

目次1. MySQLの主キーとテーブルフィールドに関するコメント1. 主キーと自動増分2. テーブル...