の集計関数 MySQL
集計関数の概要
- 複数の行で計算を実行する
- テーブルの単一列の
- そして単一の値を返します。
ISO 標準では、次の 5 つの集計関数が定義されています。
1)COUNT
2)合計
3) AVG
4)MIN
5)マックス
集計関数を使用する理由
ビジネスの観点から見ると、組織のレベルによって情報要件は異なります。トップレベルの管理者は通常、全体の数字を知りたいと考えており、必ずしも個々の詳細を知る必要はありません。
集計関数を使用すると、データベースから要約データを簡単に生成できます。
たとえば、myflixデータベースから、管理者は以下のレポートを要求する場合があります。
- 最もレンタルされていない映画。
- 最も多くレンタルされた映画。
- 各映画が XNUMX か月にレンタルされる平均数。
集計関数を使用して上記のレポートを簡単に作成します。
集約関数を詳しく見てみましょう。
COUNT関数
COUNT 関数は、指定されたフィールド内の値の合計数を返します。 これは、数値データ型と非数値データ型の両方で機能します。 すべての集計関数は、デフォルトでデータを処理する前に null 値を除外します。
COUNT (*) は、指定されたテーブル内のすべての行の数を返す COUNT 関数の特別な実装です。 COUNT (*) も考慮します ヌル そして重複します。
以下の表は、映画レンタル表のデータを示しています。
参照番号 | 取引日 | 戻り日 | 会員番号 | 映画ID | 映画_返されました |
---|---|---|---|---|---|
11 | 20-06-2012 | NULL | 1 | 1 | 0 |
12 | 22-06-2012 | 25-06-2012 | 1 | 2 | 0 |
13 | 22-06-2012 | 25-06-2012 | 3 | 2 | 0 |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
15 | 23-06-2012 | NULL | 3 | 3 | 0 |
ID 2 の映画がレンタルされた回数を取得したいとします。
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
上記のクエリを実行すると、 MySQL 作業台 myflixdb に対しては、次の結果が得られます。
COUNT('movie_id') |
---|
3 |
DISTINCT キーワード
DISTINCT キーワードを使用すると、結果から重複を除外できます。 これは、類似した値をグループ化することによって実現されます。
Distinct の概念を理解するために、簡単なクエリを実行してみましょう。
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
次に、別個のキーワードを使用して同じクエリを実行してみましょう。
SELECT DISTINCT `movie_id` FROM `movierentals`;
以下に示すように、distinct は結果から重複レコードを除外します。
movie_id |
---|
1 |
2 |
3 |
MIN機能
MIN関数 指定されたテーブルフィールドの最小値を返します.
例として、ライブラリにある最も古い映画が公開された年を知りたいとします。次のように使用できます。 MySQLの MIN 関数を使用して、必要な情報を取得します。
次のクエリはそれを達成するのに役立ちます
SELECT MIN(`year_released`) FROM `movies`;
上記のクエリを実行すると、 MySQL myflixdb に対する workbench の結果は次のようになります。
MIN('year_released') |
---|
2005 |
マックス機能
名前が示すように、MAX 関数は MIN 関数の逆です。 それ 指定されたテーブルフィールドから最大値を返します.
データベース内の最新の映画が公開された年を取得したいと仮定しましょう。 MAX 関数を使用すると、これを簡単に実現できます。
次の例では、最新の映画公開年を返します。
SELECT MAX(`year_released`) FROM `movies`;
上記のクエリを実行すると、 MySQL myflixdb を使用したワークベンチでは、次の結果が得られます。
MAX('year_released') |
---|
2012 |
SUM機能
これまでに支払われた合計金額を示すレポートが必要だとします。使用できます MySQL 和 機能する機能 指定された列のすべての値の合計を返します. SUM は数値フィールドでのみ機能します. Null 値は返される結果から除外されます。
次の表は支払い表のデータを示しています。
支払い_ID | 会員番号 | 支払期日 | 説明 | 払込金額 | 外部参照番号 |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | 映画レンタルの支払い | 2500 | 11 |
2 | 1 | 25-07-2012 | 映画レンタルの支払い | 2000 | 12 |
3 | 3 | 30-07-2012 | 映画レンタルの支払い | 6000 | NULL |
以下に示すクエリは、行われたすべての支払いを取得し、それらを合計して XNUMX つの結果を返します。
SELECT SUM(`amount_paid`) FROM `payments`;
上記のクエリを実行すると、 MySQL myflixdb に対するワークベンチでは次の結果が得られます。
SUM('amount_paid') |
---|
10500 |
AVG function
MySQL AVG function 指定された列の値の平均を返します。 SUM関数と同じように、 数値データ型でのみ機能します.
支払った平均金額を知りたいとします。次のクエリを使用できます。
SELECT AVG(`amount_paid`) FROM `payments`;
上記のクエリを実行すると、 MySQL ワークベンチでは、次の結果が得られます。
AVG('amount_paid') |
---|
3500 |
ブレインティーザー
あなたは集計関数は簡単だと思っています。 これを試して!
次の例では、メンバーを名前別にグループ化し、支払いの合計回数、平均支払い額、および支払い額の合計をカウントします。
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
上記の例を実行すると、 MySQL ワークベンチでは次の結果が得られます。
まとめ
- MySQL 5 つの ISO 標準集計関数 COUNT、SUM、 AVG、最小および最大。
- SUMと AVG 関数は数値データに対してのみ機能します。
- 集計関数の結果から重複する値を除外する場合は、DISTINCT キーワードを使用します。 ALL キーワードには重複も含まれます。 何も指定しない場合は、ALL がデフォルトとして想定されます。
- 集計関数は、次のような他の SQL 句と組み合わせて使用できます。 グループ化