Re: Problems with group by ... order by - Mailing list pgsql-general

From Tom Lane
Subject Re: Problems with group by ... order by
Date
Msg-id 1632.1128539471@sss.pgh.pa.us
Whole thread Raw
In response to Problems with group by ... order by  ("John D. Burger" <john@mitre.org>)
List pgsql-general
"John D. Burger" <john@mitre.org> writes:
> I can't figure out why the following doesn't work:
>    select
>     (case
>         when count1 < 300 then 'Other'
>         else country1
>         end) as country2,
>     sum(count1) as count2
>     from (select coalesce(country, 'None') as country1, count(*) as count1
>             from userProfiles group by country1) as counts1
>     group by country2
>     order by (country2 = 'Other'), count2 desc

>    ERROR:  column "country2" does not exist

ORDER BY (and also GROUP BY) permit references to output column names
only when they are *unadorned*.  You cannot use them in expressions.

This is a compromise between SQL92 and SQL99 rules ... it's a bit ugly.

            regards, tom lane

pgsql-general by date:

Previous
From: Dennis Jenkins
Date:
Subject: SPI_prepare, SPI_execute_plan do not return rows when using parameters
Next
From: Tom Lane
Date:
Subject: Re: SPI_prepare, SPI_execute_plan do not return rows when using parameters