Re: challenging query

From: Masaru Sugawara <rk73(at)echna(dot)ne(dot)jp>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: challenging query
Date: 2001-10-30 17:57:39
Message-ID: 20011031025141.402B.RK73@echna.ne.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Sat, 06 Oct 2001 18:54:21 +0900
Masaru Sugawara wrote:

>
> A B C D select?
> ------------------------------------
> 1 FOO A1 100 n
> 1 BAR Z2 100 n
> 2 FOO A1 101 y
> 2 BAR Z2 101 y
> ---------------------------------
> 5 FOO A1 99 n
> 3 FOO A1 102 y
> ---------------------------------
> 6 BAR Z2 98 n
> 4 BAR Z2 99 y
> ---------------------------------
> 7 FOO AB 103 y
> 7 BAR ZY 103 y
>
>
> select u0.A, u0.B, u0.C, u0.D
> from (select t0.*, t1.cnt
> from (select a, count(*) as cnt
> from test_table
> group by a ) as t1
> inner join test_table as t0
> on(t0.a = t1.a)
> ) as u0
> where not exists (select u1.*
> from (select t0.*, t1.cnt
> from (select a, count(*) as cnt
> from test_table
> group by a ) as t1
> inner join test_table as t0
> on(t0.a = t1.a)
> ) as u1
> where u1.cnt = u0.cnt
> and u1.a != u0.a
> and u1.d > u0.d
> and u1.b = u0.b
> and u1.c = u0.c
> )
> ;

I noticed there were two vain subselects in the query
when I had checked past queries by an EXPLAIN, and
gave a small change to the query.

-- on 7.1.2
select u0.*, u1.cnt
from (select a, count(*) as cnt
from test_table group by a ) as u1
inner join test_table as u0 on(u0.a = u1.a)
where not exists (select t0.*, t1.cnt
from (select a, count(*) as cnt
from test_table group by a) as t1
inner join test_table as t0 on(t0.a = t1.a)
where t1.cnt = u1.cnt
and t0.a != u0.a
and t0.d > u0.d
and t0.b = u0.b
and t0.c = u0.c
)
;

Masaru Sugawara

In response to

Responses

  • Strange loop at 2001-10-30 21:05:15 from Torbj=?ISO-8859-1?B?9g==?=rn Andersson

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-10-30 20:34:52 Re: postgresql error
Previous Message Jochem van Dieten 2001-10-30 17:01:30 Re: SQL99