Thursday, March 24, 2011

Selecting the distinct values from three columns with the max of a fourth where there are duplicates

I have a table with one numeric value (n) and three string values (a,b,c). How do I query this table so that I get only distinct values of (a,b,c) and if there are duplicates, take the maximum of the corresponding set of n values?

From stackoverflow
  • select max(n), a, b, c
    from mytable
    group by a, b, c
    
    Jon Ericson : Arg! Beat me to it. ;-)
  • Use GROUP BY:

    select a, b, c, max(n) 
    from table 
    group by a, b, c;
    

    This will show only unique or distinct sets of a, b, c and show the maximum n found in that set.

    MAX is an aggregate function designed for use with GROUP BY. Other potentially useful aggregate functions include MIN, AVERAGE, and COUNT.

    Chris Lively : +1 because you are also right.

0 comments:

Post a Comment