/ / Gruppieren nach ähnlicher Zeilenfilterung - sql, group-by

Nach Zeilenfilterung gruppieren - sql, group-by

Nehmen wir an, ich habe eine Tabelle, die Autos mit Marke, Modell, Jahr und einigen anderen Spalten beschreibt.

Daher möchte ich für jedes Jahr eine vollständige Reihe von Marken und Modellen erhalten.

Oder anders ausgedrückt. Jede Zeile hätte eine eindeutige Kombination aus Marke und Modell mit anderen Daten aus der entsprechenden Zeile mit dem größten Wert des Jahres.

Eine SQL-Standardlösung wäre großartig.

Antworten:

1 für die Antwort № 1
select t1.make, t1.model, t1.year, t1.other_cols
from table t1
where year = (select max(year) from table t2
where t2.make = t1.make
and t2.model = t1.model
);

1 für die Antwort № 2

MySQL-Lösung:

SELECT * FROM cars GROUP NY CONCAT(make, "-", model) ORDER BY year DESC;

1 für die Antwort № 3

Das sollte fast überall funktionieren:

SELECT c1.*
FROM cars c1
INNER JOIN
(
SELECT Make, Model, Max(Year) AS Year
FROM cars
GROUP BY Make, Model
) c2 ON c1.Make=c2.Make AND c1.Model=c2.Model, c1.Year=c2.Year

Der Hauptvorbehalt besteht darin, dass Year oft ein reserviertes Wort (Funktionsname) ist und die Mittel, um reservierten Wörtern zu entgehen, von Platorm abhängen. Um dies zu beheben, benennen Sie die Jahresspalte in etwas wie ModelYear um.