Выберите максимальное значение для каждой группы

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 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 

этот код выполняет задание, но я получаю две записи насоса 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 

это даст вам эту идею.