Re: pgsql aggregate: conditional max

Поиск
Список
Период
Сортировка
От Daniel CAUNE
Тема Re: pgsql aggregate: conditional max
Дата
Msg-id 0IW0005WSPTDIA40@VL-MH-MR002.ip.videotron.ca
обсуждение исходный текст
Ответ на pgsql aggregate: conditional max  (Weimao Ke <wke@indiana.edu>)
Ответы Re: pgsql aggregate: conditional max  (Weimao Ke <wke@indiana.edu>)
Список pgsql-sql
> Hi,
> 
> I need a special aggregation function. For instance, given the following
> table data:
> 
>    aid    |   cat   | weight
> ----------+---------+---------
>  a1  | Drama   |       1
>  a1  | Romance |       6
>  a1  | Short   |       1
>  a1 | Other   |       7
>  a2  | Comedy  |       1
>  a2 | Drama   |       2
>  a3  | Drama   |       1
>  a3 | Adult   |       2
>  a3 | Comedy  |       1
>  a3 | Other   |       1
> 
> I want to group by "aid" and choose the category (i.e., "cat") with the
> largest "weight":
> 
> aid   |   max_weighted_cat
> ----+---------------------
> a1   |   Other
> a2   |   Drama
> a3   |   Adult
> 
> Any ideas? Thank you! :)
> 

SELECT aid, cat FROM table, (   SELECT aid, max(weight) as weight     FROM table     GROUP BY aid) AS tablemaxweight
WHEREtable.aid = tablemaxweight.aid   AND table.weight = tablemaxweight.aid;
 

There is a limit case you don't specify how to deal with, when two or more categories have the same maximum weight.
Thequery I wrote retrieves all the categories that have the maximum weight, but perhaps you just want one per aid.
 

--
Daniel



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

Предыдущее
От: Michael Fuhr
Дата:
Сообщение: Re: pgsql aggregate: conditional max
Следующее
От: Weimao Ke
Дата:
Сообщение: Re: pgsql aggregate: conditional max