select每个组的最大值

Name Value AnotherColumn ----------- Pump 1 8000.0 Something1 Pump 1 10000.0 Something2 Pump 1 10000.0 Something3 Pump 2 3043 Something4 Pump 2 4594 Something5 Pump 2 6165 Something6 

我的桌子看起来像这样。 我想知道如何select每个泵的最大值。

 select a.name, value from out_pumptable as a, (select name, max(value) as value from out_pumptable where group by posnumber)g where and g.value = value 

这段代码完成了这个工作,但是我得到了两个Pump 1的条目,因为它有两个具有相同值的条目。

 select name, max(value) from out_pumptable group by name 
 SELECT b.name, MAX(b.value) as MaxValue, MAX(b.Anothercolumn) as AnotherColumn FROM out_pumptabl INNER JOIN (SELECT name, MAX(value) as MaxValue FROM out_pumptabl GROUP BY Name) a ON a.name = b.name AND a.maxValue = b.value GROUP BY b.Name 

注意,如果你有一个主键,这将更容易。 这是一个例子

 SELECT * FROM out_pumptabl c WHERE PK in (SELECT MAX(PK) as MaxPK FROM out_pumptabl b INNER JOIN (SELECT name, MAX(value) as MaxValue FROM out_pumptabl GROUP BY Name) a ON a.name = b.name AND a.maxValue = b.value) 
 SELECT DISTINCT (t1.ProdId), t1.Quantity FROM Dummy t1 INNER JOIN (SELECT ProdId, MAX(Quantity) as MaxQuantity FROM Dummy GROUP BY ProdId) t2 ON t1.ProdId = t2.ProdId AND t1.Quantity = t2.MaxQuantity ORDER BY t1.ProdId 

这会给你的想法。