Thread: Possible parsing problem?

Possible parsing problem?

From
nolan@celery.tssi.com
Date:
The following does NOT produce an error on the 'order by' clause,
though perhaps it should?

    SELECT col, count(*) from table group by col order by count;

If there is more than one count() function in the query, it does crete
am error for the ambiguous reference.

(FWIW, Oracle and MySQL both generate an error.)
--
Mike Nolan

Re: Possible parsing problem?

From
Andrew Gould
Date:
Try giving the "count" items names.  I just ran the
following with good results:

select fy, yrmo, count(pt_id) as cases,
count(er_level) as er_cases from case_fy2003 group by
fy, yrmo order by cases desc;

Does this address your issue?

Andrew Gould

--- nolan@celery.tssi.com wrote:
> The following does NOT produce an error on the
> 'order by' clause,
> though perhaps it should?
>
>     SELECT col, count(*) from table group by col
> order by count;
>
> If there is more than one count() function in the
> query, it does crete
> am error for the ambiguous reference.
>
> (FWIW, Oracle and MySQL both generate an error.)
> --
> Mike Nolan
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>
http://www.postgresql.org/docs/faqs/FAQ.html


Re: Possible parsing problem?

From
Tom Lane
Date:
nolan@celery.tssi.com writes:
> The following does NOT produce an error on the 'order by' clause,
> though perhaps it should?

>     SELECT col, count(*) from table group by col order by count;

AFAICS that is 100% correct per SQL92, given that we assign the default
name of "count" to the second result column.

> (FWIW, Oracle and MySQL both generate an error.)

They probably assign some other name to the column.  The spec leaves it
to the implementation what name to assign to output columns, except in
very trivial cases (or when you force the issue with AS).

            regards, tom lane