To może ja przedstawię inne rozwiązanie:
CREATE TABLE DITRIX1(idkierowcy int,punkty int,idwyscigu varchar(20));
insert into ditrix1 values(5,110,2);
insert into ditrix1 values(5,20,3);
insert into ditrix1 values(7,90,8);
insert into ditrix1 values(7,5,1);
create table ditrix2(idkierowcy int,imie char(40),nazwisko char(40));
insert into ditrix2 values(5,'Adam','Kowalski');
insert into ditrix2 values(7,'Ignacy','Krasicki');
create view bobr as select idkierowcy,sum(punkty) as punkty_zawodnika from ditrix1 where idkierowcy=5;
create view bobr2 as select idkierowcy,sum(punkty) as punkty_zawodnika from ditrix1 where idkierowcy=7;
create view polaczone_tabele as select * from bobr union all
select * from bobr2;
create view najwiecej_punktow as
SELECT GREATEST((SELECT MAX(punkty_zawodnika)
from bobr),
(select max(punkty_zawodnika)
from bobr2)) as najwiecej;
create view jaki_id_ma_tyle_punktow as select * from polaczone_tabele where punkty_zawodnika in (select * from najwiecej_punktow);
create view prawie_koniec as select idkierowcy from jaki_id_ma_tyle_punktow;
create view koniec as select * from ditrix2 where idkierowcy in ( select * from prawie_koniec) ;
select * from koniec;