Zakładam, że w aukcji każdy użytkownik może wielokrotnie podbijać cenę, ale każde podbicie musi być wyższe od poprzedniego, tzn wykluczamy sytuację, w której o wygraniu aukcji decydować miałaby kolejność zgłoszeń przy tej samej wartości oferty.
Wtedy wygrane aukcje użytkownika o id=1 otrzymujemy:
SELECT * FROM
( SELECT id_uzytkownika, id_aukcji, max(wartosc) AS najwyzsza_oferta
FROM oferty WHERE id_uzytkownika = 1 GROUP BY id_aukcji ) AS najwyzsze_oferty_uzytkownika
JOIN
( SELECT id_aukcji, max( wartosc ) AS zwycieska_oferta
FROM oferty GROUP BY id_aukcji) AS zwycieskie_oferty
ON najwyzsze_oferty_uzytkownika.id_aukcji = zwycieskie_oferty.id_aukcji
WHERE najwyzsza_oferta=zwycieska_oferta
Dla przegranych aukcji wystarczy zmienić warunek w ostatnim WHERE na przeciwny.