1. ホーム
  2. データベース
  3. マイサク

SQL集計、グループ化、ソート

2022-01-06 16:21:18

I. 集計クエリ

データベースへのアクセスでは、多くの場合、合計、最大、最小、平均などの統計的集計のためのデータの列のテーブルに、それは集約関数を使用する必要がある、いわゆる集計関数は、集約は、1行に複数の行の集約です。

一般的な集計関数は以下の通りです。

1、COUNT機能

count 関数は、テーブルの行数を数えるために使用されます。

例えば、全データの行数を数える場合。

SELECT COUNT(*) FROM users;



注意 COUNT(*)は、ヌル値NULLを含むデータ行の数を取得します。NULLを含むデータ行を除外したい場合は、COUNT(フィールド名)を使用すると、NULL以外のデータ行の数を取得できます。

SELECT COUNT(user_name) FROM users;



2、SUM機能

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

例えば、全ユーザーの年齢の合計を計算する場合。

SELECT sum(age) FROM users;



3、AVG機能

任意の列のデータの平均値を算出する。

例えば、全ユーザーの年齢の平均を計算する場合。

SELECT AVG(age) FROM users;



4、MAX関数とMIN関数

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

例えば、全ユーザーの中で年齢の最大値と最小値を計算する場合。

SELECT MAX(age),MIN(age) FROM users;



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

次に、グループ化クエリ

集計機能は、テーブル内のすべてのデータの統計的な要約であり、あなたはまた、次のように使用できます。 GROUP BY 節を使用して、まずデータをグループ化し、それから統計的な集計を行う。 その

シンタックス形式。

SELECT <field name>,... FROM <tableName> GROUP BY <fieldName>,... ;



例えば、ユーザーを都市でグループ化し、各都市のユーザーの合計をカウントする場合。

SELECT city,count(*) FROM users GROUP BY city;
+-------+----------+
| city | count(*) |
+-------+----------+
| Beijing | 60 |
| Shanghai | 45 |
| NULL | 80 |
| Jinan | 12 |
+-------+----------+



その結果、フィールドは NULL もグループとしてリストアップされます。これを除外したい場合は WHERE 節があります。

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



三、集計結果をフィルタリングする

を使用する場合 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 節で指定された列名(すなわち集約キー)

IV. クエリ結果の並べ替え

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

構文形式。

SELECT <field name>,... FROM <table name> ORDER BY <field name> ASC/DESC,... ;



usersテーブルのレコードを年齢で昇順に並べ替える場合。

SELECT * FROM users ORDER BY age ASC;



注意 昇順ASCは省略可能ですが、降順DESCは必ず記述してください。

例えば、usersテーブルのレコードを年齢で降順に並べ替えたい場合。

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の集計、グループ化、ソートについては、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。