hakeの日記

Windows環境でプログラミングの勉強をしています。

SQLite - 集計関数

sqlite> select * from AAA;
ii          tt          rr
----------  ----------  ----------
1           aaa         1.0
2           bbb         2.0
3           ccc         3.0
            ddd         4.0
5           eee

 

SUMとTOTAL

合計値を返す。
対象がintegerの場合、sumはintegerで、totalはrealで返す。
対象が全てnullの場合、sumはnullを返し、totalは0.0を返す。

sqlite> select sum(ii),sum(rr),total(ii),total(rr) from AAA;
sum(ii)     sum(rr)     total(ii)   total(rr)
----------  ----------  ----------  ----------
11          10.0        11.0        10.0
sqlite> select sum(ii),sum(rr),total(ii),total(rr) from AAA where ii isnull;
sum(ii)     sum(rr)     total(ii)   total(rr)
----------  ----------  ----------  ----------
            4.0         0.0         4.0
sqlite> select sum(ii),sum(rr),total(ii),total(rr) from AAA where rr isnull;
sum(ii)     sum(rr)     total(ii)   total(rr)
----------  ----------  ----------  ----------
5                       5.0         0.0

 

COUNT

引数が * の場合は全レコード数を返し、特定の列の場合はその列の値がnullでないレコード数を返す。

sqlite> select count(*),count(ii),count(tt) from AAA;
count(*)    count(ii)   count(tt)
----------  ----------  ----------
5           4           5

 

MAX, MIN, AVG

最小値、最大値、平均値

sqlite> select max(ii),min(ii),avg(ii),max(rr),min(rr),avg(rr) from AAA;
max(ii)     min(ii)     avg(ii)     max(rr)     min(rr)     avg(rr)
----------  ----------  ----------  ----------  ----------  ----------
5           1           2.75        4.0         1.0         2.5

 

連結(GROUP_CONCAT)

textとして連結する。

sqlite> select group_concat(ii,'_'),group_concat(tt,'_'),group_concat(rr,'_') from AAA;
group_concat(ii,'_')  group_concat(tt,'_')  group_concat(rr,'_')
--------------------  --------------------  --------------------
1_2_3_5               aaa_bbb_ccc_ddd_eee   1.0_2.0_3.0_4.0