On 10/17/07, Heikki Linnakangas <heikki@xxxxxxxxxxxxxxxx> wrote: > Stefano Dal Pra wrote: > > suppose you have a large table tab and two (or more) queryes like this: > > > > SELECT count(*),A FROM tab WHERE C GROUP BY A; > > SELECT count(*),B FROM tab WHERE C GROUP BY B; > > > > is there any way to get both results in a single query, > > eventually through stored procedure? > > The retrieved [count(*),A] ; [count(*),B)] data couldnt fit > > on a single table, of course. > > > > The main goal would be to get multiple results while scanning the > > table[s] once only > > thus getting results in a faster way. > > > > This seems to me quite a common situation but i have no clue whether a neat > > solution can be implemented through stored procedure. > > With a temp table: > > CREATE TEMPORARY TABLE tmp AS SELECT COUNT(*) as rows, a,b FROM WHERE C > GROUP BY a,b; > SELECT SUM(rows), a FROM tmp GROUP BY a; > SELECT SUM(rows), b FROM tmp GROUP BY b; > DROP TABLE tmp; > Thank You. I actually already do something like that: in a stored procedure i do create a md5 hash using passed parameters converted to TEXT and get a unix_like timestamp using now()::abstime::integer. This gets me a string like: 9ffeb60e9e6581726f7f5027b42c7942_1192443215 which i do use to EXECUTE CREATE TABLE 9ffeb60e9e6581726f7f5027b42c7942_1192443215 AS SELECT * FROM getjd('''||param1||''','''||param2||''','||param3||','||param4||')' The 9ffeb60e9e6581726f7f5027b42c7942_1192443215 is what i called 'tab' in my first post, and i need to perform about 7 queryes on that. (after a while i will drop the table using the timestamp part of the name, but that's another point). Here is where i would like to scan once only that table. Depending on parameters it may get as big as 50Mb (this actually is the tablespace size growth) or more with about 10^6 tuples. Stefano > (Using temp tables in plpgsql procedures doesn't quite work until 8.3. > But you can use dynamic EXECUTE as a work-around. There used to be a FAQ > entry about that, but apparently it's been removed because the problem > has been fixed in the upcoming release.) > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com > ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend