dwie tabele:
„Kontrakty” tabela zawierająca opis wszystkich kontraktów licząca 2 mln rekordów
Kontrakt_id number(10)
Grupa_id number(4)
Plan_taryfowy_id number(4)
„Rozmowy” zawiera wpisy o rozmowach wykonywane przez kontrakt za ostatni miesiąc, liczącą 60 mln rekordów.
Kontrakt_id number(10)
Dlugosc_polączenia number(16) /*Długość połączenia w sekundach */
Dla każdego zdarzenia – rozmowy, istnieje dokładnie jeden rekord.
1.
dla każdego kontraktu istniejącego w tabeli Kontrakty, obojętnie czy wykonywał rozmowy, wyświetlić ilość połączeń dłuższych niż 1 000 sekund. W przypadku gdy kontrakt nie wykonywał połączeń lub wszystkie połączenia kontraktu były krótsze niż 1 000 sekund należy dla danego numeru kontrakt_id wyświetlić liczbę 0.
cos kombinuje ale mi nie wychodzi:
select kontrakty.kontrakt_id,
case when rozmowy.dlugosc_polaczenia>1000 then (count(rozmowy.dlugosc_polaczenia) ) else 0 end
from kontrakty inner join rozmowy
on kontrakty.kontrakt_id = rozmowy.kontrakt_id
group by kontrakty.kontrakt_id, case when rozmowy.dlugosc_polaczenia>1000 then (count(rozmowy.dlugosc_polaczenia))else 0 end