Re: Unexpected results when using GROUP BY GROUPING SETS and bind variables

Поиск
Список
Период
Сортировка
От Aner Perez
Тема Re: Unexpected results when using GROUP BY GROUPING SETS and bind variables
Дата
Msg-id CAP-7WhPMjBUfChLxO8HM5xwE7iL-4HLYV3KxFZ402+1ak3aBiA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Unexpected results when using GROUP BY GROUPING SETS and bind variables  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Of course, right when I hit send I thought of another option that makes the SQL a little less readable but perhaps gets rid of the ambiguity.  Using ordinals in the GROUP BY:

SELECT path[1], path[2], path[3], path[4], sum(value)
FROM bind_group_by
GROUP BY GROUPING SETS (
    (1, 2, 3, 4),
    (1, 2, 3),
    (1, 2),
    (1),
    ()
)
ORDER BY 1, 2, 3, 4;

Since I'm generating the SQL I'm not too worried about the readability and it works with bind variables too.  I promise I'll stop thinking after this one ;-)

Thanks!

  - Aner

On Wed, Sep 9, 2020 at 2:45 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Aner Perez <aner.perez+pgsql-general@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

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Unexpected results when using GROUP BY GROUPING SETS and bind variables
Следующее
От: JAGMOHAN KAINTURA
Дата:
Сообщение: Oracle Associate Array conversion to PostgreSQL