Podman で PostgreSQL を起動してサブクエリーを試してみた

Docker を使わず Podman でも PostgreSQL コンテナーの動作を確認したかったのと、ついでにあるプロダクトだと想定したサブクエリーが動作しなかったので、これらを試してみました。

Podman で PostgreSQL を起動して psql 接続

podman machine start

podman run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

podman exec -it some-postgres psql -h some-postgres -U postgres

サブクエリーの検証

複数の日付から一番古い日付と一番新しい日付をサブクエリーで取得する例です。

create table test (id serial, name text, adate date);

insert into test (name, adate) values ('taro', '2024-07-01'),('taro', '2024-07-08'),('taro', '2024-07-15');

insert into test (name, adate) values ('jiro', '2024-07-08'),('jiro', '2024-07-15'),('jiro', '2024-07-22');

select * from test;

 id | name |   adate    
----+------+------------
  1 | taro | 2024-07-01
  2 | taro | 2024-07-08
  3 | taro | 2024-07-15
  4 | jiro | 2024-07-08
  5 | jiro | 2024-07-15
  6 | jiro | 2024-07-22
(6 rows)

select
   name
from test
group by name
;

 name 
------
 taro
 jiro
(2 rows)

select
   s.name
   , (select t.adate from test as t where t.name = s.name order by t.adate limit 1) as bdate
   , (select t.adate from test as t where t.name = s.name order by t.adate desc limit 1) as cdate
from test as s
group by name
;

 name |   bdate    |   cdate    
------+------------+------------
 taro | 2024-07-01 | 2024-07-15
 jiro | 2024-07-08 | 2024-07-22
(2 rows)

```

後片付け

podman stop some-postgres

podman rm some-postgres

podman rmi postgres

podman machine stop
タグ: ,