連載 [第4回] :
  初心者のための SQL-BOOTCAMP

データ分析に欠かせない「集計関数」について

2023年1月17日(火)
久保 司
第4回となる今回は、データ分析に欠かせない集計関数について説明します。

はじめに

新しい年を迎え4回目となる今回のSQL-BOOTCAMPでは、データ分析には欠かせない集計関数について説明します。便利で強力な関数なので、ぜひ使い方をマスターしてください。

訓練に使用するデータベースは、これまでに引き続き、いつもの「SQLite」を使用していきます。

それでは、今回も張り切って訓練へ行ってみましょう!

強力な武器その4(集計関数)

集計関数とは、ある項目に対して合計したり、平均値を求めたり、あるいはデータ件数を取得したり等、その名の通り集計を行う関数です。都度計算をする必要がないので、データ分析等に利用すると便利な関数です。今回は、下表に示す基本的な5つの集計関数を紹介します。

また、集計関数を利用する際に項目をグループ単位で集計できる、集計関数には不可欠なGROUP BY句も併せて紹介します。

第1回第2回に引き続き、社員テーブル(tbl_employees)に登録されているデータを使用して説明していきます。今回は集計関数の説明のため、以前利用したテーブルの項目を一部変更したいと思います。社員テーブルを作成済みの場合は、始めに下記のDROPコマンドで社員テーブルを削除してください。その後、再度CREATEコマンドで社員テーブルを作成し、INSERTコマンドでデータを挿入してください。まだ社員テーブルを作成していない場合は、CREATEコマンドから実行してください。

【DROPコマンド】
DROP TABLE tbl_employees;
【CREATEコマンド】
CREATE TABLE tbl_employees (emp_code INTEGER , emp_name TEXT , kana TEXT , gender TEXT , age INTEGER , dept_code INTEGER);
【INSERTコマンド】
INSERT INTO tbl_employees (emp_code,emp_name,kana,gender,age,dept_code)
VALUES
  ('1','HoriiTaro','ホリイタロウ','M','40','1')
, ('2','IshimuraHana','イシムラハナ','F','33','2')
, ('3','KitajimaRuna','キタジマルナ','F','45','3')
, ('4','MuroiYuri',NULL,'F',NULL,'1')
, ('5','KitazawaAika','キタザワアイカ','F','33','1')
, ('6','MitaniKoukiti','ミタニコウキチ','M','23','2');
【社員テーブル作成済みの場合(DROP、CREATE、INSERT)】
【社員テーブル未作成の場合(CREATE、INSERT)】

作成した社員テーブルの内容を確認してみましょう。

.headers on
.mode column

SELECT *  FROM tbl_employees;

*「.headers」「.mode」は表示内容の設定コマンドなので、ログイン後に1回実行すればOKです。

INSERTコマンドで作成した6件のデータを確認できます。

それでは、本題の集計関数に行ってみましょう!

(1)COUNT関数

COUNT関数は、指定された項目Xの件数を返します。ただし、項目Xの値がNULLの場合は件数から除外されます。また、項目Xに「*」(アスタリスク)を指定した場合は、指定したテーブルの行数を返します。

項目Xに「*」を指定した場合と、テーブル項目を指定した場合の使用例を確認してみましょう。

項目Xに「*」を指定してデータ件数を取得する。

SELECT COUNT( * ) FROM tbl_employees;

社員テーブルのデータ件数「6」が返されます。

次に、項目Xに「kana」を指定して実行してみましょう。

SELECT COUNT( kana ) FROM tbl_employees;

結果は「5」となります。

登録したデータを確認してみると、emp_code = 4の「kana」の値がNULLとなっています(SELECTの結果は何も表示されていません)。NULLはCOUNT関数の集計対象とならないので、件数は「5」が返されます。

(2)SUM関数

SUM関数は指定された項目Xの合計を返します。ただし、項目の値がNULLの場合は除外して集計します。

下図の使用例では「年齢」の合計を取得しています。

項目Xに「age」を指定して実行してみます。

SELECT SUM( age ) FROM tbl_employees;

結果は使用例にあるように「age」の合計「174」が返されます。SUM関数もCOUNT関数と同様に、emp_code = 4の「age」のNULL値は対象外となるので注意しましょう。

株式会社システムインテグレータ
長年にわたり、基幹システム構築プロジェクトにおいて全工程を経験。その際、OracleやSQLServer等のDBMSでSQLを使用したプログラム開発を実施。現在は、製品企画室でスキル判定サービス「TOPSIC-SQL」のコンテンツ作成を主に担当。

連載バックナンバー

データベース技術解説
第10回

実践! 「TOPSIC SQL CONTEST」の練習問題にチャレンジしよう

2023/7/25
最終回となる今回は、これまでの訓練の成果を計るために、SQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST(TSC)」の練習問題にチャレンジしてみましょう。
データベース技術解説
第9回

神出鬼没!サブクエリについて(Part.2)

2023/6/29
第9回となる今回は、前回に引き続き、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。
データベース技術解説
第8回

神出鬼没! サブクエリについて(Part.1)

2023/5/30
第8回となる今回からは、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています