Mam wyzwanie SQL, z którym potrzebuję pomocy.SQL - jak grupować według identyfikatora i identyfikować kolumnę o największej wartości?
Poniżej znajduje się uproszczony przykład, w moim prawdziwym przypadku mam około 500 tys. Wierszy w wolnym WIDOKU. Więc jeśli masz rozwiązanie, które również jest skuteczne, byłbym wdzięczny. Myślę, że muszę używać GROUP BY w taki czy inny sposób, ale nie jestem pewien.
Powiedzmy mam tabeli jak ten
╔═════════╦══════════╦══════════╦═══════╗
║ 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 ║
╚═════════╩══════════╩══════════╩═══════╝
Więc to, co chcę zrobić, to:
W każdym zamówieniu, gdzie istnieją zarówno jedzenie i linia zamówienia napojów, chcę najwyższy napoju cena
Więc w tym przykładzie chciałbym mieć zestaw Wynikiem tego:
╔═════════╦═══════╦═══════╗
║ ORDERID ║ NAME ║ PRICE ║
╠═════════╬═══════╬═══════╣
║ 1 ║ Beer ║ 5 ║
║ 2 ║ Juice ║ 1.5 ║
╚═════════╩═══════╩═══════╝
Jak mogę to osiągnąć w skuteczny sposób?
. . Ponieważ mówisz, że widok jest drogi, myślę, że powinieneś wybrać rozwiązanie Bogdana. Nigdy wcześniej nie robiłem takiego komentarza, ale podkreślasz powolność widoku i to jedyne rozwiązanie, które skanuje widok tylko raz. –
Tak, to dobra, a może i lepsza odpowiedź. Wybrałem i wprowadziłem to, zanim przeszedłem przez Bogdana. Moim ostatecznym kryterium było jednak rozwiązanie tego problemu, więc poszedłem z pierwszą i najlepszą odpowiedzią. Ale rozumiem twoją opinię. – Rupal