Aner Perez <aner.perez+pgsql-gene...@gmail.com> writes:
> Or if using indexed path elements in the GROUP BY is the issue and I should
> put the array indexing in a subselect and do the aggregation in the outer
> select.  Like this:

> -- Safer Subselect Version --
> SELECT level1, level2, level3, level4, sum(value)
> FROM (
>     SELECT path[1] as level1, path[2] as level2, path[3] as level3, path[4]
> as level4, value
>     FROM bind_group_by
> ) AS expanded
> GROUP BY GROUPING SETS (
>     (level1, level2, level3, level4),
>     (level1, level2, level3),
>     (level1, level2),
>     (level1),
>     ()
> )
> ORDER BY 1, 2, 3, 4;

Yeah, that one looks a lot safer from here.  There's no question about
which expressions are supposed to match what.  It should end up with
the same plan, too.

                        regards, tom lane


Reply via email to