Re: How do I optimize this?

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: How do I optimize this?
Дата
Msg-id 49C0B241.6030005@archonet.com
обсуждение исходный текст
Ответ на Re: How do I optimize this?  (Wei Weng <wweng@kencast.com>)
Список pgsql-sql
Wei Weng wrote:
> I made a mistake in the queries:
> 
> They should be
> 
> update T set t1 = b.aa FROM (select COUNT(1) as aa FROM D WHERE D.da =
> 1) as b where tkey = <value>;
> update T set t2 = b.aa FROM (select COUNT(1) as aa FROM D WHERE D.da =
> 2) as b where tkey = <value>;
> ...
> update T set t10 = b.aa FROM (select COUNT(1) as aa FROM D WHERE D.da =
> 10) as b where tkey = <value>;

You should be able to generate all the counts from one scan:

UPDATE T set t1 = b.a1, t2 = b.a2 ...
FROM ( SELECT   sum(CASE WHEN D.da=1 THEN 1 ELSE 0 END) AS a1,   sum(CASE WHEN D.da=2 THEN 1 ELSE 0 END) AS a2,   ...
FROMD
 
) AS b
WHERE tkey = <value>

You might also want to look at the crosstab functions in the tablefunc
contrib module (see appendix F of the manuals).

--  Richard Huxton Archonet Ltd


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

Предыдущее
От: Ivan Sergio Borgonovo
Дата:
Сообщение: 2 left join taking in too many records, 1 join and 1 left join too few was: join
Следующее
От: Srikanth
Дата:
Сообщение: Re: SQL to Check whether "AN HOUR PERIOD" is between start and end timestamps