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
タグ: Podman, PostgreSQL