Matura 2015 zad 6.4

0

Otoż mam problem z zadaniem:

Dla każdego kraju, którego reprezentanci zdobywali punkty w sezonie 2012, podaj liczbę tych
reprezentantów.

select   Count(Kraj), Kraj
from Kierowcy
inner join Wyniki on Kierowcy.Id_kierowcy=Wyniki.Id_kierowcy
inner join Wyscigi on Wyniki.Id_wyscigu=Wyscigi.Id_wyscigu
where Rok = '2012'
group by Kraj
having sum(Punkty) > 0

Tabela kierowcy zawiera Id_kierowcy, Nazwisko, Imie, Kraj.
Tabela wyniki zawiera Id_kierowcy, Punkty,Id_wyscigu
Tabela wyscigi zawiera Id_wyscigu, Rok, GrandPrix.

Kod ktory mam podaje bledne dane obstawiam ze blad tkwi gdzies w grupowaniu.

Strona cke https://cke.gov.pl/egzamin-maturalny/egzamin-w-nowej-formule/arkusze/2015-2/ z zdaniem i danym

0

count(kierowcy.id_kierowcy), bo chcesz liczyć kierowców, nie kraje. To chyba jedyna rzecz do poprawy.

0

Mogloby sie tak wydawać ale to tez jest zle
To daje nam:
21 Australia
24 Brazylia
19 Finlandia
14 Francja
18 Hiszpania
9 Japonia
7 Meksyk
46 Niemcy
5 Wenezuela
37 Wielka Brytania

A oczekiwany wynik to:
Australia 2
Brazylia 2
Finlandia 1
Francja 2
Hiszpania 1
Japonia 1
Meksyk 1
Niemcy 4
Wenezuela 1
Wielka Brytania 3

0

select Count(Kraj)

Liczysz kraje czy reprezentanatów? :P

//
Poza tym:
Nie jestem pewny (na sucho bez ciężko mi powiedzieć), ale spróbuj dać:
where Rok = '2012' and Punkty > 0
i usuń
having sum(Punkty) > 0
bo jeżeli jest dwóch kierowców a jeden zdobył punkty, to się pokaszani.

0

OK rozwiazanie to

Select count(DISTINCT Nazwisko), Kraj
from Kierowcy
inner join Wyniki on Kierowcy.Id_kierowcy=Wyniki.Id_kierowcy
inner join Wyscigi on Wyniki.Id_wyscigu=Wyscigi.Id_wyscigu
where Rok = 2012
group by Kraj
order by Kraj

Dzieki za pomoc @Potat0x

1 użytkowników online, w tym zalogowanych: 0, gości: 1