Search Postgresql Archives

Re: how to write an optimized sql with two same subsql?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: sunpeng [mailto:bluevaley@xxxxxxxxx] 
> Sent: Thursday, October 14, 2010 7:34 PM
> To: pgsql-general@xxxxxxxxxxxxxx
> Subject: how to write an optimized sql with two same subsql?
> 
> We have a table A:
> CREATE TABLE A(
>    uid integer,
>    groupid integer
> )
> Now we use this subsql to get each group's count:
> SELECT count(*) as count
> FROM A
> GROUP BY groupid
> ORDER BY groupid
> 
> Then we try to find the group pair with following conditions:
> SELECT c.groupid as groupid1,d.groupid as groupid2 FROM 
> subsql as c, subsql as d WHERE d.groupid > c.groupid
>               and d.count > c.count;
> 
> Does that mean subsql will be executed twice? or how to write 
> the optimized sql?
> 

Is that what you want:

WITH gr_counts AS (
	SELECT groupid, COUNT(*) AS CNT
	  FROM A
	  GROUP BY groupid)
SELECT C.groupid AS groupid1, D.groupid AS groupid2
  FROM gr_counts C, gr_counts D
  WHERE D.groupid > C.groupid
    AND D.count > C.count;

This will execute:

SELECT groupid, COUNT(*) AS CNT
	  FROM A
	  GROUP BY groupid

only once.

Regards,
Igor Neyman

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux