職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

SQLite集計関数--2

2020年07月29日 | sqlite
SQLite集計関数--2

【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力

【指定したカラムに含まれる値の最大値と最小値を取得(max関数, min関数)】
書式;最大値
max(カラム名)
書式;最小値
min(カラム名)
【SQL文】
sqlite> select * from user;
name point gender
---------- ---------- ----------
Yamada 72 Man
Suzuki 94 Woman
Honda 58 Woman
Nishi 82 Man
sqlite> select max(point), min(point) from user;
max(point) min(point)
---------- ----------
94 58
sqlite>
【指定したカラムに含まれる値を連結して表示(group_concat関数)】
書式
group_concat(カラム名)

【SQL文】
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .header on
sqlite> .mode column
sqlite> create table user(id integer, name text, gender text);
データ入力
sqlite> insert into user values(1, 'Honda', 'Man'); insert into user values(2, 'Suzuki', 'Woman'); insert into user values(3, 'Kojima', 'Man'); insert into user values(4, NULL, 'Man'); insert into user values(5, 'Sakai', 'Woman');
データ出力
sqlite> select * from user;
id name gender
---------- ---------- ----------
1 Honda Man
2 Suzuki Woman
3 Kojima Man
4 Man
5 Sakai Woman
sqlite>
・group_concat 関数を使って name カラムの値を連結
sqlite> select group_concat(name) from user;
group_concat(name)
-------------------------
Honda,Suzuki,Kojima,Sakai
sqlite>
・gender カラム毎にグループ化して連結
sqlite> select gender, group_concat(name) from user group by gender;
gender group_concat(name)
---------- ------------------
Man Honda,Kojima
Woman Suzuki,Sakai
sqlite>
・連結するときの区切り文字を指定する
sqlite> select group_concat(name, '+') from user;
group_concat(name, '+')
-------------------------
Honda+Suzuki+Kojima+Sakai
sqlite>

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SQLiteの集計関数--1

2020年07月29日 | sqlite
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>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする