なんだかGoodVibes

日々の勉強メモです。

【SQLite】データの取得(ODER BY、WHERE、GROUP BY)

こんにちは。
SQLiteメモの続きです。

概要

以下の記事の続きです。

【SQLite】基本操作・データベースの作成 - なんだかGoodVibes

【SQLite】テーブルの作成とデータの追加 - なんだかGoodVibes


用意するテーブル

items

Id          Name        TypeId      ColorId     Memo      
----------  ----------  ----------  ----------  ----------
1           Apple       1           1                     
2           Strawberry  1           1                     
3           Orange      1           2                     
4           Lemon       1           4                     
5           Kiwifruit   1           3                     
6           Banana      1           4                     
7           Tomato      2           1                     
8           Pumpkin     2           4                     
9           Spinach     2           3                     
10          GreenPeppe  2           3


colors

Id          Name      
----------  ----------
1           Red       
2           Orange    
3           Green     
4           Yellow    
5           Bule      
6           Purple


types

Id          Name      
----------  ----------
1           Fruit     
2           Vegetables


ODER BYで並び替える

昇順

itemsテーブルをColorIdで昇順に並び替えます。

sqlite> SELECT * FROM items ORDER BY ColorId ASC;
Id          Name        TypeId      ColorId     Memo
----------  ----------  ----------  ----------  ----------
1           Apple       1           1
2           Strawberry  1           1
7           Tomato      2           1
3           Orange      1           2
5           Kiwifruit   1           3
9           Spinach     2           3
10          GreenPeppe  2           3
4           Lemon       1           4
6           Banana      1           4
8           Pumpkin     2           4
降順

itemsテーブルをColorIdで降順に並び替えます。

sqlite> SELECT * FROM items ORDER BY ColorId DESC;
Id          Name        TypeId      ColorId     Memo
----------  ----------  ----------  ----------  ----------
4           Lemon       1           4
6           Banana      1           4
8           Pumpkin     2           4
5           Kiwifruit   1           3
9           Spinach     2           3
10          GreenPeppe  2           3
3           Orange      1           2
1           Apple       1           1
2           Strawberry  1           1
7           Tomato      2           1
複数のカラムで並べ替え

itemsテーブルをTypeIdとColorIdで昇順に並び替えます。

sqlite> SELECT * FROM items ORDER BY TypeId ASC, ColorId ASC;
Id          Name        TypeId      ColorId     Memo
----------  ----------  ----------  ----------  ----------
1           Apple       1           1
2           Strawberry  1           1
3           Orange      1           2
5           Kiwifruit   1           3
4           Lemon       1           4
6           Banana      1           4
7           Tomato      2           1
9           Spinach     2           3
10          GreenPeppe  2           3
8           Pumpkin     2           4


WHEREで条件を絞って取得する

itemsテーブルから、TypeIdが1のデータを取得します。

sqlite> SELECT * FROM items WHERE TypeId = 1;
Id          Name        TypeId      ColorId     Memo
----------  ----------  ----------  ----------  ----------
1           Apple       1           1
2           Strawberry  1           1
3           Orange      1           2
4           Lemon       1           4
5           Kiwifruit   1           3
6           Banana      1           4


GROUP BYでグループ化する

グループ化して数を取得する

itemsテーブルのTypeIdでグループ化して数を取得します。

sqlite> SELECT TypeId, count(*) FROM items GROUP BY TypeId;
TypeId      count(*)
----------  ----------
1           6
2           4
HAVINGで条件を設定する

HAVINGはGROUP BYしたものに対して条件を設定することができます。
itemsテーブルをColorIdでグループ化して、数が2より大きいものを取得します。

sqlite> SELECT ColorId, count(*) FROM items GROUP BY ColorId HAVING count(*) > 2;
ColorId     count(*)
----------  ----------
1           3
3           3
4           3



以上です。