Re: Using an ALIAS in WHERE clause
От | Magnus Naeslund(f) |
---|---|
Тема | Re: Using an ALIAS in WHERE clause |
Дата | |
Msg-id | 06c001c29749$1dc03de0$f80c0a0a@mnd обсуждение исходный текст |
Ответ на | Using an ALIAS in WHERE clause ("Ron St.Pierre" <rstpierre@syscor.com>) |
Ответы |
Re: Using an ALIAS in WHERE clause
|
Список | pgsql-general |
Tom Lane <tgl@sss.pgh.pa.us> wrote: [snip] > > The sub-select has its own aggregation pipeline that acts before the > outer select does anything, so the basic rule of "no aggregate > references in WHERE" is not being violated here. > I was thinking of an related thing, how do we handle queries like these (actual used query): select o.id as order_id, o.cust_id, i.id as invoice_id, i.created::date as invoice_created, extract('days' from (now() - i.created)) as days_overdue, c.type, c.status from order o, invoice i, cust c where (o.ordersystem = 0) and (o.status = 3 and o.substatus = 3) and (i.order_id = o.id) and (c.id = o.cust_id) and (c.account_expires >= now()) and ((c.type & (1|4|8)::int8) = 0) and /* some int8 flags */ ((c.status & (2|4)::int8) = 0) and /* some other int8 flags */ ->extract('days' from (now() - i.created)) >= 20 order by dagar_overdue desc ; Is the days_overdue calculated twice, if it is, how can i get the effect of replacing the where condition with days_overdue? Like: select days_overdue ... where (extract('days' from (now() - i.created)) AS days_overdue) >= 20 Hmm. Well it's not that big of an hassle but it'd look nice! Not sure of how big of a performance win it would be, the extract thing shouldn't be that slow, right? Regards Magnus Naeslund
В списке pgsql-general по дате отправления: