Ich habe eine SQL-Herausforderung, mit der ich ein wenig Hilfe brauche.SQL - Wie gruppiere ich nach ID und identifiziere die Spalte mit dem höchsten Wert?
Unten ist ein vereinfachtes Beispiel, in meinem realen Fall habe ich etwa 500k Zeilen in einer langsamen Ansicht. Also, wenn Sie eine Lösung haben, die auch effektiv ist, würde ich es begrüßen. Ich denke, ich muss GROUP BY auf die eine oder andere Weise verwenden, aber ich bin mir nicht sicher.
Sagen wir, ich habe eine Tabelle wie diese
╔═════════╦══════════╦══════════╦═══════╗
║ ORDERID ║ NAME ║ TYPE ║ PRICE ║
╠═════════╬══════════╬══════════╬═══════╣
║ 1 ║ Broccoli ║ Food ║ 1 ║
║ 1 ║ Beer ║ Beverage ║ 5 ║
║ 1 ║ Coke ║ Beverage ║ 2 ║
║ 2 ║ Beef ║ Food ║ 2.5 ║
║ 2 ║ Juice ║ Beverage ║ 1.5 ║
║ 3 ║ Beer ║ Beverage ║ 5 ║
║ 4 ║ Tomato ║ Food ║ 1 ║
║ 4 ║ Apple ║ Food ║ 1 ║
║ 4 ║ Broccoli ║ Food ║ 1 ║
╚═════════╩══════════╩══════════╩═══════╝
Also, was ich tun möchte, ist:
In jeder Ordnung, wo es sowohl Essen und Getränke bestellen Linie sind, möchte ich die höchste Getränke Preis
So in diesem Beispiel Ich mag würde eine Ergebnismenge davon haben:
╔═════════╦═══════╦═══════╗
║ ORDERID ║ NAME ║ PRICE ║
╠═════════╬═══════╬═══════╣
║ 1 ║ Beer ║ 5 ║
║ 2 ║ Juice ║ 1.5 ║
╚═════════╩═══════╩═══════╝
Wie kann ich das effektiv erreichen?
. . Weil Sie sagen, dass die Aussicht teuer ist, sollten Sie Bogdans Lösung gewählt haben. Ich habe noch nie einen solchen Kommentar gemacht, aber Sie betonen die Langsamkeit der Ansicht und diese Lösung ist die einzige, die die Ansicht nur einmal scannt. –
Ja, das ist eine gute oder vielleicht auch bessere Antwort. Ich hatte das schon ausgewählt und umgesetzt, bevor ich Bogdan's durchging. Mein ultimatives Kriterium war jedoch, das zu lösen, also ging ich mit der ersten und besten Antwort. Aber ich verstehe deine Meinung. – Rupal