SQL集計、グループ化、ソート
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の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
MySQLのLike演算子に関する詳細
-
mysqlにおけるvarcharの日付比較とソートの実装
-
[解決済み] datetimeの挿入時に文字列から日付や時刻を変換すると、変換に失敗する
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
群関数解の無効な使用
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
SQL基本クエリステートメント
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLで正規表現を使う 詳細
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
[解決済み] 親の行を削除または更新できない:外部キー制約が失敗する
-
[解決済み] ユニークなテーブル/エイリアスではない
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)