今日もSQLZOOでSQLを学んだ。 sqlzoo.net
開発環境
$ docker exec -it faaaar-db bash root@{CONTAINER_ID}:/# psql -U postgres postgres=# \dt List of relations Schema | Name | Type | Owner --------+-----------+-------+---------- public | idol | table | postgres public | idol_unit | table | postgres public | unit | table | postgres
サブクエリ
idが25(緋田 美琴)のアイドルより、身長が高いアイドルを抽出。
SELECT id, name, height FROM idol WHERE height > ( SELECT height FROM idol WHERE id = 25 ) ;
↓
id | name | height ----+-----------+-------- 7 | 白瀬 咲耶 | 175
サブクエリ: 入れ子
最年少のアイドルの身長(= 小宮果穂 163cm)より、身長が高いアイドルを抽出。
SELECT id, name, height FROM idol WHERE height > (( SELECT height FROM idol WHERE age = ( SELECT MIN(age) FROM idol ) )) ;
↓
id | name | height ----+-------------+-------- 4 | 月岡 恋鐘 | 165 7 | 白瀬 咲耶 | 175 16 | 有栖川 夏葉 | 168 23 | 市川 雛菜 | 165 25 | 緋田 美琴 | 170
入れ子にできるので基本想像通りに書ける。