SQLiteの集計関数
【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力
【指定したカラムまたはテーブル全体の行数をカウント(count関数)】
書式
count(カラム名)
・例文
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .table
color earn kantou product test user1
dept foods olduser staff user
テーブル
sqlite> drop table user;
sqlite>
テーブル作成
create table user(id integer, name text, address text, gender text);
sqlite>
sqlite> insert into user values(1, 'Honda', 'Tokyo', 'Man');
sqlite> insert into user values(2, 'Suzuki', 'Nagoya', 'Woman');
sqlite> insert into user values(3, 'Kojima', 'Kyoto', 'Man');
sqlite> insert into user values(4, 'Utada', NULL, 'Man');
sqlite> insert into user values(5, 'Sakai', 'Tokyo', 'Woman');
sqlite>
count 関数を使って name カラムと address カラムの行数を取得
sqlite> .header on
sqlite> .mode column
sqlite>
sqlite> select count(name), count(address) from user;
count(name) count(address)
----------- --------------
5 4
sqlite>
【指定したカラムに含まれる値の合計を取得(sum関数, total関数)】
書式
sum(カラム名)
または
total(カラム名)
SQL文
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> create table uriage(shiten text, sales);
sqlite> .header on
sqlite> .mode column
sqlite> insert into uriage values('Osaka', 450);
sqlite> insert into uriage values('Nagoya', 380);
sqlite> insert into uriage values('Ciba', 95);
sqlite> select * from uriage;
shiten sales
---------- ----------
Osaka 450
Nagoya 380
Ciba 95
sqlite> select sum(sales), total(sales) from uriage;
sum(sales) total(sales)
---------- ------------
925 925.0
sqlite>
【指定したカラムに含まれる値の平均を取得(avg関数)】
avg 関数の書式
avg(カラム名)
SQL文
テーブル作成
sqlite> create table user(name text, point integer, gender text);
データインス
sqlite> insert into user values('Yamada', 72, 'Man');
sqlite> insert into user values('Suzuki', 94, 'Woman');
sqlite> insert into user values('Honda', 58, 'Woman');
sqlite> insert into user values('Nishi', 82, 'Man');
表示
sqlite> select * from user;
name point gender
---------- ---------- ----------
Yamada 72 Man
Suzuki 94 Woman
Honda 58 Woman
Nishi 82 Man
avg 関数
sqlite> select avg(point) from user;
avg(point)
----------
76.5
sqlite>
・平均を計算するカラムにNULLおよび文字列が含まれていた場合
sqlite> insert into user values('Togawa', NULL, 'Man');
sqlite> insert into user values('Furuta', 'NODATA', 'Woman');
sqlite> select * from user;
name point gender
---------- ---------- ----------
Yamada 72 Man
Suzuki 94 Woman
Honda 58 Woman
Nishi 82 Man
Togawa Man ←NULLは除外
Furuta NODATA Woman
sqlite> select avg(point) from user;
avg(point)
----------
61.2=(72+94+58+82)÷5
sqlite>
※コメント投稿者のブログIDはブログ作成者のみに通知されます