Thread: picking max from list

picking max from list

From
Jodi Kanter
Date:
I have a query that produces results similar to this:<br /><br /> run#      rd_pk      group#<br /> 0           
9209     5   <br /> 1            9209      8<br /> 0            9520      2<br /> 1            9520      5<br /> 0     
     9520   etc....<br /> 0            8652<br /> 1            8652<br /> 2            8652<br /> 0            8895  
<br/> 1            8894<br /><br /> 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?<br /> Thanks<br /> Jodi<br /><div
class="moz-signature">--<br /></div><div class="Section1"><p class="MsoNormal"><i><span style="font-size: 9pt;
font-family:Arial;">_______________________________<br /></span></i><i><span style="font-size: 10pt;">Jodi L Kanter<br
/>BioInformatics Database Administrator<br /> University of Virginia<br /> (434) 924-2846<br /><a
href="mailto:jkanter@virginia.edu">jkanter@virginia.edu</a></span></i><spanstyle="font-size: 11pt; font-family:
Arial;"><brstyle="" /><br style="" /></span><p class="MsoNormal"><span style="font-size: 11pt; font-family:
Arial;"> </span><pclass="MsoNormal"><i><span style="font-size: 9pt; font-family: Arial;"> </span></i><p
class="MsoNormal"><i><spanstyle="font-size: 9pt; font-family: Arial;"> </span></i></div> 

Re: picking max from list

From
Bruno Wolff III
Date:
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

From
Guy Fraser
Date:
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