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
Mój stół wygląda mniej więcej tak. Chciałbym wiedzieć, jak wybrać maksymalną wartość dla każdej pompy.
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
ten kod spełnia swoje zadanie, ale otrzymuję dwa wpisy pompy 1, ponieważ ma dwa wpisy o tej samej wartości.
GROUP BY
. Ściśle mówiąc,GROUP BY
każda kolumna w twoimSELECT
musi albo występować w twoim,GROUP BY
albo być używana w funkcji agregującej.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
Zauważ, że byłoby to znacznie łatwiejsze, gdybyś miał klucz podstawowy. Oto przykład
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)
źródło
select name, value from( select name, value, ROW_NUMBER() OVER(PARTITION BY name ORDER BY value desc) as rn from out_pumptable ) as a where rn = 1
źródło
id DESC
naPARTITION
i owinięty tej kwerendy w sposóbLEFT OUTER JOIN as grades ON grades.enrollment_id = enrollment.id
i działa idealnie.select Name, Value, AnotherColumn from out_pumptable where Value = ( select Max(Value) from out_pumptable as f where f.Name=out_pumptable.Name ) group by Name, Value, AnotherColumn
Spróbuj w ten sposób, to działa.
źródło
select * from (select * from table order by value desc limit 999999999) v group by v.name
źródło
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
to da ci pomysł.
źródło