PostgreSQLのサブクエリを試す

今日もSQLZOOでSQLを学んだ。 sqlzoo.net


開発環境

github.com

$ 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

入れ子にできるので基本想像通りに書ける。

参考