Ich dachte, dies wäre von allgemeinem Interesse für die Gruppe, weil es eine tatsächliche Job-Interview SQL-Frage ist, die ich falsch verstanden habe. Ich denke, ich war nahe, aber kann jemand die richtige Antwort geben?SQL-Verhältnis von Wert zu max Spaltenwert nach Gruppe
Brand | Model | Price
Braun | KF7150 | 98
Braun | KF7000 | 70
Braun | KF400 | 55
Krups | KM730 | 67
Krups | KM4689 | 130
Krups | EC311 | 50
Für die obige Tabelle (Kaffee), den Code zur Verfügung stellen, die Marke anzeigt, Modell, Preis, und das Verhältnis jeden Preis des Modells auf den höchsten Preis für seine Marke, gerundet auf dem nächsten 2 Dezimalstellen.
Dieser Code, den ich kenne, ist falsch, weil er einfach den Gesamtpreis (130) wählt.
SELECT Brand, Model, Price, ROUND(Price/(SELECT MAX(Price) FROM Coffee),2)
as Price_to_Brand_Highest
FROM Coffee
ORDER BY Brand;
Ich versuchte einen Selbstbeitritt, aber alle Verhältnisse kamen als 1 zurück, weil jeder Preis von sich geteilt wurde.
SELECT C1.Brand, C1.Model, C1.Price, ROUND(C1.Price/(SELECT MAX(C2.Price)
FROM Coffee where C1.Brand=C2.Brand),2) as Price_to_Brand_Highest
FROM Coffee C1
JOIN Coffee C2 on C1.Model=C2.Model
GROUP BY C1.Model
ORDER BY C1.Brand;
Entfernen 'JOIN Kaffee C2 auf C1.Model = C2.Model' und' GROUP BY C1.Model' und alias der Tabelle in der Unterabfrage als 'C2' und multiplizieren Zähler oder Nenner von 1,0 (in der korrelierten Unterabfrage), um eine ganzzahlige Division zu vermeiden. –