Обсуждение: picking max from list

Поиск
Список
Период
Сортировка

picking max from list

От
Jodi Kanter
Дата:
I have a query that produces results similar to this:

run#      rd_pk      group#
0            9209      5  
1            9209      8
0            9520      2
1            9520      5
0            9520   etc....
0            8652
1            8652
2            8652
0            8895  
1            8894

Ultimately I want to know the group number for EACH rd_pk with the highest run number. Can this be done in one query? Or will I need to code with a loop?
Thanks
Jodi
--

_______________________________
Jodi L Kanter
BioInformatics Database Administrator
University of Virginia
(434) 924-2846
jkanter@virginia.edu


 

 

 

Re: picking max from list

От
Bruno Wolff III
Дата:
On Wed, Dec 10, 2003 at 15:37:10 -0500, Jodi Kanter <jkanter@virginia.edu> wrote:
> I have a query that produces results similar to this:
> 
> run#      rd_pk      group#
> 0            9209      5  
> 1            9209      8
> 0            9520      2
> 1            9520      5
> 0            9520   etc....
> 0            8652
> 1            8652
> 2            8652
> 0            8895  
> 1            8894
> 
> Ultimately I want to know the group number for EACH rd_pk with the 
> highest run number. Can this be done in one query? Or will I need to 
> code with a loop?
> Thanks

You can do this using the postgres distinct on extension.
The query would look something like:
select distinct on (rd_pk) run, rd_pk, group from table_name order by run desc;


Re: picking max from list

От
Guy Fraser
Дата:
select group,rd_pk
from (select ...) as your_query,(select max(run) as max_run,rd_pk as rdfrom (select ...) as your_query) as max_rd
where rd = rd_pk and max_run = run;

I dont know if you call that one query but it should work.

There may be more elegant solutions, but I havn't had a chance to read 
up on the new join types.

Good luck


Jodi Kanter wrote:

> I have a query that produces results similar to this:
>
> run#      rd_pk      group#
> 0            9209      5  
> 1            9209      8
> 0            9520      2
> 1            9520      5
> 0            9520   etc....
> 0            8652
> 1            8652
> 2            8652
> 0            8895  
> 1            8894
>
> Ultimately I want to know the group number for EACH rd_pk with the 
> highest run number. Can this be done in one query? Or will I need to 
> code with a loop?
> Thanks
> Jodi


-- 
Guy Fraser
Network Administrator