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?.
version
PostgreSQL 12.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
23 rows affected
23 rows affected
name date car_group
BMW 2017-01-01 (BMW,0)
AUDI 2017-12-01 (AUDI,1)
BMW 2017-12-01 (BMW,1)
SEAT 2017-12-01 (SEAT,3)
BMW 2017-12-05 (BMW,2)
BMW 2017-12-29 (BMW,2)
BMW 2018-01-01 (BMW,2)
BMW 2018-01-01 (BMW,2)
BMW 2018-01-01 (BMW,2)
MERCEDES 2018-01-01 (MERCEDES,9)
MERCEDES 2018-01-01 (MERCEDES,9)
null 2018-01-01 (,11)
MERCEDES 2018-01-05 (MERCEDES,10)
MERCEDES 2018-01-05 (MERCEDES,10)
MERCEDES 2018-01-09 (MERCEDES,10)
SEAT 2018-02-01 (SEAT,14)
MERCEDES 2018-03-01 (MERCEDES,11)
null 2018-03-01 (,16)
MERCEDES 2018-04-01 (MERCEDES,12)
SEAT 2018-04-01 (SEAT,17)
MERCEDES 2018-04-09 (MERCEDES,13)
SEAT 2018-05-01 (SEAT,18)
SEAT 2018-07-01 (SEAT,18)
name date car_group
BMW 2017-01-01 (BMW,0)
AUDI 2017-12-01 (AUDI,1)
BMW 2017-12-01 (BMW,1)
SEAT 2017-12-01 (SEAT,3)
BMW 2017-12-05 (BMW,2)
BMW 2017-12-29 (BMW,2)
BMW 2018-01-01 (BMW,2)
BMW 2018-01-01 (BMW,2)
BMW 2018-01-01 (BMW,2)
MERCEDES 2018-01-01 (MERCEDES,9)
MERCEDES 2018-01-01 (MERCEDES,9)
null 2018-01-01 (,11)
MERCEDES 2018-01-05 (MERCEDES,10)
MERCEDES 2018-01-05 (MERCEDES,10)
MERCEDES 2018-01-09 (MERCEDES,10)
SEAT 2018-02-01 (SEAT,14)
MERCEDES 2018-03-01 (MERCEDES,11)
null 2018-03-01 (,16)
MERCEDES 2018-04-01 (MERCEDES,12)
SEAT 2018-04-01 (SEAT,17)
MERCEDES 2018-04-09 (MERCEDES,13)
SEAT 2018-05-01 (SEAT,18)
SEAT 2018-07-01 (SEAT,18)
min count first last
BMW 5 2017-12-05 2018-01-01
MERCEDES 2 2018-01-01 2018-01-01
MERCEDES 3 2018-01-05 2018-01-09
SEAT 2 2018-05-01 2018-07-01
QUERY PLAN
Sort (cost=281.56..281.73 rows=67 width=80) (actual time=0.178..0.180 rows=4 loops=1)
  Output: (min((grouped_cars.name)::text)), (count(1)), (min(grouped_cars.date)), (max(grouped_cars.date)), grouped_cars.car_group
  Sort Key: (min(grouped_cars.date)), (count(1)) DESC, (min((grouped_cars.name)::text))
  Sort Method: quicksort Memory: 25kB
  Buffers: shared hit=1
  -> GroupAggregate (cost=256.73..279.53 rows=67 width=80) (actual time=0.142..0.174 rows=4 loops=1)
        Output: min((grouped_cars.name)::text), count(1), min(grouped_cars.date), max(grouped_cars.date), grouped_cars.car_group
        Group Key: grouped_cars.car_group
        Filter: (count(1) > 1)
        Rows Removed by Filter: 11
        Buffers: shared hit=1
        -> Sort (cost=256.73..259.63 rows=1160 width=70) (actual time=0.131..0.134 rows=23 loops=1)
              Output: grouped_cars.car_group, grouped_cars.name, grouped_cars.date
              Sort Key: grouped_cars.car_group
              Sort Method: quicksort Memory: 27kB
              Buffers: shared hit=1
              -> Subquery Scan on grouped_cars (cost=162.89..197.69 rows=1160 width=70) (actual time=0.074..0.096 rows=23 loops=1)
                    Output: grouped_cars.car_group, grouped_cars.name, grouped_cars.date
                    Buffers: shared hit=1
                    -> WindowAgg (cost=162.89..186.09 rows=1160 width=74) (actual time=0.073..0.092 rows=23 loops=1)
                          Output: cars.name, cars.date, ROW(cars.name, (dense_rank() OVER (?) - (dense_rank() OVER (?)))), cars.seq
                          Buffers: shared hit=1
                          -> Sort (cost=162.89..165.79 rows=1160 width=50) (actual time=0.071..0.073 rows=23 loops=1)
                                Output: cars.name, cars.seq, cars.date, (dense_rank() OVER (?))
                                Sort Key: cars.seq
                                Sort Method: quicksort Memory: 26kB
                                Buffers: shared hit=1
                                -> WindowAgg (cost=80.64..103.84 rows=1160 width=50) (actual time=0.042..0.064 rows=23 loops=1)
                                      Output: cars.name, cars.seq, cars.date, dense_rank() OVER (?)
                                      Buffers: shared hit=1
                                      -> Sort (cost=80.64..83.54 rows=1160 width=42) (actual time=0.034..0.036 rows=23 loops=1)
                                            Output: cars.name, cars.seq, cars.date
                                            Sort Key: cars.name, cars.seq
                                            Sort Method: quicksort Memory: 26kB
                                            Buffers: shared hit=1
                                            -> Seq Scan on public.cars (cost=0.00..21.60 rows=1160 width=42) (actual time=0.007..0.010 rows=23 loops=1)
                                                  Output: cars.name, cars.seq, cars.date
                                                  Buffers: shared hit=1
Planning Time: 0.117 ms
Execution Time: 0.245 ms