Idea: PostgreSQL equivalent to Oracle's KEEP clause

Поиск
Список
Период
Сортировка
От Ben Clements
Тема Idea: PostgreSQL equivalent to Oracle's KEEP clause
Дата
Msg-id CAFKPu3vbSOwmYm=uUSgPuUvgVAFQvcwx1U5HD9Vy+GhHzQsO_g@mail.gmail.com
обсуждение исходный текст
Ответы Re: Idea: PostgreSQL equivalent to Oracle's KEEP clause  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
I have an idea/request for enhancement to PostgreSQL (I'm new to PostgreSQL and this mailing list).
------------------------------------------------
Idea:

There's a technique in Oracle SQL that can be used to simplify aggregation queries:
Aggregate on a particular column, but get information from a different column, using a simple calculated column in the SELECT list.
 
--Oracle
--For a given country, what city has the highest population? (where the country has more than one city)
--Include the city name as a column.
select
   country,
   count(*),
   max(population),
   max(city) keep (dense_rank first order by population desc)
from
   cities
group by
   country
having
   count(*) > 1
 
As shown above, the following calculated column can bring in the city name, even though the city name isn't in the GROUP BY:
   max(city) keep (dense_rank first order by population desc)
 
There are a number of ways to achieve that kind of thing using PostgreSQL. I want a solution that lets me do it in a calculated column -- all within a single SELECT query (no subqueries, joins, WITH, etc.).
 
Could that functionality be added to PostgreSQL?
 
Related:
Thanks,

-Ben

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: garbage data back
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Idea: PostgreSQL equivalent to Oracle's KEEP clause