Re: Question about double table scans for a table

Поиск
Список
Период
Сортировка
От jian he
Тема Re: Question about double table scans for a table
Дата
Msg-id CACJufxFY1+gAbV8J2+COGGSn4id_kQpKA750=gb2ZGaBkEx4Yw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Question about double table scans for a table  (David Rowley <dgrowleyml@gmail.com>)
Список pgsql-bugs
On Fri, Jul 28, 2023 at 12:01 PM David Rowley <dgrowleyml@gmail.com> wrote:
>
> On Fri, 28 Jul 2023 at 12:12, jian he <jian.universality@gmail.com> wrote:
> > I think you query is equivalent to following:
> >
> > select
> >     ps_partkey,
> >     sum(ps_supplycost * ps_availqty) filter (where ps_supplycost > 0
> > and ps_availqty > 0 ) as value
>
> The FILTER clause is applied before aggregation.  HAVING is applied
> after aggregation. This is not even nearly the same.
>
> (You might have forgotten that numbers can be negative and also you
> might have missed the * 0.0001000000.)
>
> The original query seems to want all parts apart from the ones that
> are below 1/10000th of the total ps_supplycost * ps_availqty for all
> parts.
>
> David

Is this equivalent to the original query?

select ps_partkey, value from
(
    select
        ps_partkey,
        sum(ps_supplycost * ps_availqty) as value,
        sum(ps_supplycost * ps_availqty) over(partition by ps_partkey)
* 0.0001000000 as temp
    from
        PARTSUPP,
        SUPPLIER,
        NATION
    where
        ps_suppkey = s_suppkey
        and s_nationkey = n_nationkey
        and n_name = 'MOZAMBIQUE'
    group by
        ps_partkey
) sub1
where value > temp
order by value desc;



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

Предыдущее
От: Asier Lostalé
Дата:
Сообщение: Re: BUG #18038: Aliases removed from view definitions
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #18038: Aliases removed from view definitions