Thread: count( distinct x )

count( distinct x )

From
Anthony
Date:
Apologies if this has been asked b4, but got this result when
attemplting to search the archives on the website

Not Found

The requested URL /mhonarc/pgsql-sql/search.cgi was not found on this
server.


Apache/1.3.12 Server at postgresql.rmplc.co.uk Port 80

The problem I have is with this statement:
   select count( distinct area ) from areapostcode where postcode like
'BS1%'

the above statement fails with   ERROR:  parser: parse error at or near "distinct"

I am not the greatest when it comes to SQL, but the pgsql docs implied
that the above would work.

What I am trying to do is get a count of the no of matches from the
statement below   select distinct area from areapostcode where postcode like 'BS1%'

Not the count of:   select area from areapostcode where postcode like 'BS1%'

Can anyone help?

TIA
Bap.


Re: count( distinct x )

From
Jose Rodrigo Fernandez Menegazzo
Date:
> The problem I have is with this statement:
>
>     select count( distinct area ) from areapostcode where postcode like
> 'BS1%'
>
> the above statement fails with
>     ERROR:  parser: parse error at or near "distinct"
>
> I am not the greatest when it comes to SQL, but the pgsql docs implied
> that the above would work.
>
> What I am trying to do is get a count of the no of matches from the
> statement below
>     select distinct area from areapostcode where postcode like 'BS1%'
>
> Not the count of:
>     select area from areapostcode where postcode like 'BS1%'
>

I don't have where to try it, but have you tried:

select distinct count(area) from areapostcode where postcode like 'BS1%'

Rodrigo F.




Re: count( distinct x )

From
Anthony
Date:
Jose Rodrigo Fernandez Menegazzo wrote:

> > The problem I have is with this statement:
> >
> >     select count( distinct area ) from areapostcode where postcode like
> > 'BS1%'
> >
> > the above statement fails with
> >     ERROR:  parser: parse error at or near "distinct"
> >
> > I am not the greatest when it comes to SQL, but the pgsql docs implied
> > that the above would work.
> >
> > What I am trying to do is get a count of the no of matches from the
> > statement below
> >     select distinct area from areapostcode where postcode like 'BS1%'
> >
> > Not the count of:
> >     select area from areapostcode where postcode like 'BS1%'
> >
>
> I don't have where to try it, but have you tried:
>
> select distinct count(area) from areapostcode where postcode like 'BS1%'
>
> Rodrigo F.

yes, it responds as if distinct is not in the query string.

Thanks,
Bap.




Re: count( distinct x )

From
Michael Fork
Date:
I think you want

SELECT count(distinct(area)) FROM areapostcode WHERE postcode LIKE 'BS1%'

Michael Fork - CCNA - MCP - A+
Network Support - Toledo Internet Access - Toledo Ohio

On Mon, 27 Nov 2000, Anthony wrote:

> Apologies if this has been asked b4, but got this result when
> attemplting to search the archives on the website
> 
> Not Found
> 
> The requested URL /mhonarc/pgsql-sql/search.cgi was not found on this
> server.
> 
> 
> Apache/1.3.12 Server at postgresql.rmplc.co.uk Port 80
> 
> The problem I have is with this statement:
> 
>     select count( distinct area ) from areapostcode where postcode like
> 'BS1%'
> 
> the above statement fails with
>     ERROR:  parser: parse error at or near "distinct"
> 
> I am not the greatest when it comes to SQL, but the pgsql docs implied
> that the above would work.
> 
> What I am trying to do is get a count of the no of matches from the
> statement below
>     select distinct area from areapostcode where postcode like 'BS1%'
> 
> Not the count of:
>     select area from areapostcode where postcode like 'BS1%'
> 
> Can anyone help?
> 
> TIA
> Bap.
> 



Re: count( distinct x )

From
Anthony
Date:
Michael Fork wrote:

> I think you want
>
> SELECT count(distinct(area)) FROM areapostcode WHERE postcode LIKE 'BS1%'
>

psql still not happy :(

SELECT count(distinct(area)) FROM areapostcode WHERE postcode LIKE 'BS1%';
ERROR:  parser: parse error at or near "distinct"

Thanks,
Bap.

>
> Michael Fork - CCNA - MCP - A+
> Network Support - Toledo Internet Access - Toledo Ohio
>
> On Mon, 27 Nov 2000, Anthony wrote:
>
> > Apologies if this has been asked b4, but got this result when
> > attemplting to search the archives on the website
> >
> > Not Found
> >
> > The requested URL /mhonarc/pgsql-sql/search.cgi was not found on this
> > server.
> >
> >
> > Apache/1.3.12 Server at postgresql.rmplc.co.uk Port 80
> >
> > The problem I have is with this statement:
> >
> >     select count( distinct area ) from areapostcode where postcode like
> > 'BS1%'
> >
> > the above statement fails with
> >     ERROR:  parser: parse error at or near "distinct"
> >
> > I am not the greatest when it comes to SQL, but the pgsql docs implied
> > that the above would work.
> >
> > What I am trying to do is get a count of the no of matches from the
> > statement below
> >     select distinct area from areapostcode where postcode like 'BS1%'
> >
> > Not the count of:
> >     select area from areapostcode where postcode like 'BS1%'
> >
> > Can anyone help?
> >
> > TIA
> > Bap.
> >



Re: count( distinct x )

From
Anthony
Date:
Kenn Thompson wrote:

> What about
>
> select count(*) from (select distinct area from areapostcode where postcode like 'BS1%')
>

select count(*) from (select distinct area from areapostcode where
postcode like 'BS1%');
ERROR:  parser: parse error at or near "select"

Thanks, any more ideas?

>
> >>> Anthony <lists@a1.org.uk> 11/27/00 12:24PM >>>
> Jose Rodrigo Fernandez Menegazzo wrote:
>
> > > The problem I have is with this statement:
> > >
> > >     select count( distinct area ) from areapostcode where postcode like
> > > 'BS1%'
> > >
> > > the above statement fails with
> > >     ERROR:  parser: parse error at or near "distinct"
> > >
> > > I am not the greatest when it comes to SQL, but the pgsql docs implied
> > > that the above would work.
> > >
> > > What I am trying to do is get a count of the no of matches from the
> > > statement below
> > >     select distinct area from areapostcode where postcode like 'BS1%'
> > >
> > > Not the count of:
> > >     select area from areapostcode where postcode like 'BS1%'
> > >
> >
> > I don't have where to try it, but have you tried:
> >
> > select distinct count(area) from areapostcode where postcode like 'BS1%'
> >
> > Rodrigo F.
>
> yes, it responds as if distinct is not in the query string.
>
> Thanks,
> Bap.


Re: count( distinct x )

From
Tom Lane
Date:
Anthony <lists@a1.org.uk> writes:
>     select count( distinct area ) from areapostcode where postcode like
> 'BS1%'
> the above statement fails with
>     ERROR:  parser: parse error at or near "distinct"

What Postgres version are you running?  Support for count(distinct foo)
was added in 7.0, IIRC.
        regards, tom lane


Re: count( distinct x )

From
Anthony
Date:
Tom Lane wrote:

> Anthony <lists@a1.org.uk> writes:
> >     select count( distinct area ) from areapostcode where postcode like
> > 'BS1%'
> > the above statement fails with
> >     ERROR:  parser: parse error at or near "distinct"
>
> What Postgres version are you running?  Support for count(distinct foo)
> was added in 7.0, IIRC.
>
>                         regards, tom lane

select version();
version
-------------------------------------------------------------------
PostgreSQL 6.5.3 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66
(1 row)

bugger!

any ideas how to get same result at relative speed with different query?

Thanks Tom.




Re: count( distinct x )

From
Anthony
Date:
Najm Hashmi wrote:

> Anthony wrote:
>
> > Michael Fork wrote:
> >
> > > I think you want
> > >
> > > SELECT count(distinct(area)) FROM areapostcode WHERE postcode LIKE 'BS1%'
> > >
> >
> > psql still not happy :(
> >
> > SELECT count(distinct(area)) FROM areapostcode WHERE postcode LIKE 'BS1%';
> > ERROR:  parser: parse error at or near "distinct"
> >
> > Thanks,
> > Bap.
> >
> > >
> > > Michael Fork - CCNA - MCP - A+
> > > Network Support - Toledo Internet Access - Toledo Ohio
> > >
> > > On Mon, 27 Nov 2000, Anthony wrote:
> > >
> > > > Apologies if this has been asked b4, but got this result when
> > > > attemplting to search the archives on the website
> > > >
> > > > Not Found
> > > >
> > > > The requested URL /mhonarc/pgsql-sql/search.cgi was not found on this
> > > > server.
> > > >
> > > >
> > > > Apache/1.3.12 Server at postgresql.rmplc.co.uk Port 80
> > > >
> > > > The problem I have is with this statement:
> > > >
> > > >     select count( distinct area ) from areapostcode where postcode like
> > > > 'BS1%'
> > > >
> > > > the above statement fails with
> > > >     ERROR:  parser: parse error at or near "distinct"
> > > >
> > > > I am not the greatest when it comes to SQL, but the pgsql docs implied
> > > > that the above would work.
> > > >
> > > > What I am trying to do is get a count of the no of matches from the
> > > > statement below
> > > >     select distinct area from areapostcode where postcode like 'BS1%'
> > > >
> > > > Not the count of:
> > > >     select area from areapostcode where postcode like 'BS1%'
> > > >
> > > > Can anyone help?
> > > >
> > > > TIA
> > > > Bap.
> > > >
>
> Hi,
> I think this might work: It works on my machine, and I have postgres 7.xx
>  SELECT distinct(count(area)) FROM areapostcode WHERE postcode LIKE 'BS1%'
>
> Regrads
> Najm

no, this one succedes, but returns the count of   select area from areapostcode where postcode like 'BS1%'
not the count of   select distinct area from areapostcode where postcode like 'BS1%'

but I have just replied to this list with the following

select version();
version
-------------------------------------------------------------------
PostgreSQL 6.5.3 on i686-pc-linux-gnu, compiled by gcc egcs-2.91.66
(1 row)




Re: count( distinct x )

From
Anthony
Date:
Kenn Thompson wrote:

> Ok- messy, but it works....
>
> CREATE VIEW testview AS
> select distinct area from areapostcode where postcode like 'BS1%';
>
> SELECT COUNT(*) FROM testview;
>
> kenn
>
> >>> Anthony <lists@a1.org.uk> 11/27/00 01:07PM >>>
> Kenn Thompson wrote:
>
> > What about
> >
> > select count(*) from (select distinct area from areapostcode where postcode like 'BS1%')
> >
>
> select count(*) from (select distinct area from areapostcode where
> postcode like 'BS1%');
> ERROR:  parser: parse error at or near "select"
>
> Thanks, any more ideas?
>
> >
> > >>> Anthony <lists@a1.org.uk> 11/27/00 12:24PM >>>
> > Jose Rodrigo Fernandez Menegazzo wrote:
> >
> > > > The problem I have is with this statement:
> > > >
> > > >     select count( distinct area ) from areapostcode where postcode like
> > > > 'BS1%'
> > > >
> > > > the above statement fails with
> > > >     ERROR:  parser: parse error at or near "distinct"
> > > >
> > > > I am not the greatest when it comes to SQL, but the pgsql docs implied
> > > > that the above would work.
> > > >
> > > > What I am trying to do is get a count of the no of matches from the
> > > > statement below
> > > >     select distinct area from areapostcode where postcode like 'BS1%'
> > > >
> > > > Not the count of:
> > > >     select area from areapostcode where postcode like 'BS1%'
> > > >
> > >
> > > I don't have where to try it, but have you tried:
> > >
> > > select distinct count(area) from areapostcode where postcode like 'BS1%'
> > >
> > > Rodrigo F.
> >
> > yes, it responds as if distinct is not in the query string.
> >
> > Thanks,
> > Bap.

CREATE VIEW testview AS
-> select distinct area from areapostcode where postcode like 'BS1%';
ERROR:  DISTINCT not supported in views

I think it's time to get Mr. Sysadmin to upgrade to v7 ;)

Thanks all, if anyone has an ideas of how to get this working on 6.5.3, then please help.
I'll check back in the morning, and try any suggestions, if no joy will try to get PostgreSQL
upgraded.

Thanks all.
Bap.



Re: count( distinct x )

From
Tom Lane
Date:
Anthony <lists@a1.org.uk> writes:
> I think it's time to get Mr. Sysadmin to upgrade to v7 ;)

That's a good idea on many grounds, not only this one ;-)

However, if you really need a 6.5.* solution, you could do
SELECT DISTINCT foo INTO TEMP TABLE mytemp FROM ...SELECT COUNT(*) FROM mytemp;DROP TABLE mytemp;
        regards, tom lane