LoginSignup
0
0

More than 5 years have passed since last update.

集計関数

Last updated at Posted at 2016-11-21

COUNT

テーブルの行数を求める場合は、COUNT 関数を使用します。テーブル全体の行数を求めたい
場合は、COUNT 関数の引数には、「全ての列」を意味する「(アスタリスク)」を指定します。
また、関数の引数に「
」を使用出来るのは、COUNT 関数のみとなります。

任意の列から NULL の行を除外して数えたい場合は、対象とする列を限定して引数に記述し
ます。以下に「sel_price」列から NULL を除外した件数を求める例を示します。

レコード数の取得

COUNT関数はSELECT文により選択されたレコードの件数を返します。 COUNT関数の引数に*(アスタリスク)を指定した場合はすべてのレコード数を取得することができます。

SELECT COUNT(*)
FROM テーブル名

NULLを含まないレコード数の取得

COUNT関数の引数に列名を指定した場合は,その列の値がNULL以外のレコード数を取得します.

SELECT COUNT(列名)
FROM テーブル名

重複を含まないレコード数の取得

COUNT関数の引数でDISTINCT句を使用すると,重複した値を1つにまとめてからレコード数を取得することができます。

SELECT COUNT(DISTINCT 列名)
FROM テーブル名

GROUP BY

GROUP BY句を使用することで,同じ値を持つデータごとにグループ化してレコード数を求めることができます。

なお、GROUP BY 句の位置にも厳密なルールがあって、必ず FROM 句の後ろ(WHERE 句があるならさらにその後ろ)におく必要があります。また、GROUP BY 句を使用する場合、SELECT句に集約キー以外の列名を書くとことは出来ません。
※集約キー(GROUP BY句に指定する列のことを集約キーやグループ列と呼ぶ。)以外の名前など種類は出せません。

従業員コード 従業員名 年齢 種別
A0001 チャーリー・ブラウン 15 人間
A0002 ペパーミント・パティ 15 人間
B0001 スヌーピー 4
C0001 ウッドストック 3

グループごとに合計と平均を求める
種別ごとに年齢の合計と平均を求める場合は以下のようにSQLを書きます。

SQL

SELECT SUM(年齢) AS 年齢の合計, AVG(年齢) AS 年齢の平均, 種別
FROM 従業員マスタ
GROUP BY 種別

結果

年齢の合計 年齢の平均 種別
30 15 人間
4 4
3 3
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0