add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
select version();
version
PostgreSQL 16.0 (Debian 16.0-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
SELECT 1
CREATE TABLE mytable (
id INT ,
period_type VARCHAR(20) ,
period INT ,
commission INT );

INSERT INTO mytable VALUES
('123456','Daily','10','10'),
('123456','Monthly','3','11'),
('123456','Daily','5','12'),
('123456','Monthly','1','13'),
('123457','Monthly','6','14'),
('123457','Daily','5','15'),
('123457','Monthly','9','16');

CREATE TABLE
INSERT 0 7
SELECT *
FROM mytable;
id period_type period commission
123456 Daily 10 10
123456 Monthly 3 11
123456 Daily 5 12
123456 Monthly 1 13
123457 Monthly 6 14
123457 Daily 5 15
123457 Monthly 9 16
SELECT 7
SELECT
m3.id,
m3.period_type,
m3.period,
m4.commission
FROM (
SELECT
m.id,
m.period_type,
max(m.period) as period
FROM mytable m
INNER JOIN (
SELECT DISTINCT
id,
max(period_type) over (partition by id ) period_type
FROM mytable
) x on x.id=m.id and x.period_type=m.period_type
GROUP BY m.id, m.period_type
) m3
INNER JOIN mytable m4 on m4.id=m3.id
and m4.period_type=m3.period_type
and m4.period=m3.period
id period_type period commission
123456 Monthly 3 11
123457 Monthly 9 16
SELECT 2
SELECT json_agg(m5)
from (
SELECT
m3.id,
m3.period_type,
m3.period,
m4.commission
FROM (
SELECT
m.id,
m.period_type,
max(m.period) as period
FROM mytable m
INNER JOIN (
SELECT DISTINCT
id,
max(period_type) over (partition by id ) period_type
FROM mytable
) x on x.id=m.id and x.period_type=m.period_type
GROUP BY m.id, m.period_type
) m3
INNER JOIN mytable m4 on m4.id=m3.id
and m4.period_type=m3.period_type
and m4.period=m3.period
) m5



json_agg
[{"id":123456,"period_type":"Monthly","period":3,"commission":11},
 {"id":123457,"period_type":"Monthly","period":9,"commission":16}]
SELECT 1