greatest n per group - mysql select top n max values -
how can select top n max values table?
for table this:
column1 column2 1 foo 2 foo 3 foo 4 foo 5 bar 6 bar 7 bar 8 bar for n=2, result needs be:
3 4 7 8 the approach below selects max value each group.
select max(column1) table group column2 returns:
4 8
for n=2 could
select max(column1) m table t group column2 union select max(column1) m table t column1 not in (select max(column1) column2 = t.column2) for n use approaches described here simulate rank on partition.
edit: this article give need.
basically this
select t.* (select grouper, (select val table li li.grouper = dlo.grouper order li.grouper, li.val desc limit 2,1) mid ( select distinct grouper table ) dlo ) lo, table t t.grouper = lo.grouper , t.val > lo.mid replace grouper name of column want group , val name of column hold values.
to work out how functions go step-by-step inner query , run them.
also, there slight simplification - subquery finds mid can return null if category not have enough values there should coalesce of constant make sense in comparison (in case min of domain of val, in article max).
edit2: forgot mention limit 2,1 determines n (limit n,1).
Comments
Post a Comment