Ho una sfida SQL con la quale ho bisogno di un piccolo aiuto.SQL: come raggruppare per ID e identificare la colonna con il valore più alto?
Di seguito è riportato un esempio semplificato, nel mio caso reale ho circa 500k righe in una VIEW lenta. Quindi, se hai una soluzione efficace, la apprezzerei. Sto pensando di usare GROUP BY in un modo o nell'altro, ma non ne sono sicuro.
Diciamo che ho una tabella come questa
╔═════════╦══════════╦══════════╦═══════╗
║ 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 ║
╚═════════╩══════════╩══════════╩═══════╝
Quindi quello che voglio fare è:
In ogni ordine, dove ci sono sia il cibo e la linea di ordinazione bevande, voglio che la più alta delle bevande prezzo
Quindi in questo esempio mi piacerebbe avere un set di risultati di questo:
╔═════════╦═══════╦═══════╗
║ ORDERID ║ NAME ║ PRICE ║
╠═════════╬═══════╬═══════╣
║ 1 ║ Beer ║ 5 ║
║ 2 ║ Juice ║ 1.5 ║
╚═════════╩═══════╩═══════╝
Come posso ottenerlo in modo efficace?
. . Perché tu dici che la vista è costosa, penso che avresti dovuto scegliere la soluzione di Bogdan. Non ho mai fatto un commento come questo prima, ma sottolineo la lentezza della vista e quella soluzione è l'unica che scansiona la vista solo una volta. –
Sì, questa è una buona o forse una risposta migliore. L'avevo già scelto e implementato prima di passare per Bogdan. Il mio ultimo criterio era comunque quello di risolvere questo, quindi sono andato con la prima e migliore risposta. Ma capisco la tua opinione. – Rupal