Wątek przeniesiony 2020-03-19 16:16 z Ogłoszenia drobne przez furious programming.

Wykonanie zestawienia zawierającego konkretne dane

0

czesc,

mam do zrobienia takie zadanko, moge liczyc na czyjas pomoc?
nie wiem jak do danego wykladowcy przypisac studenta z najwieksza liczba ocen

W bazie danych ABDUczelnia zrobić zestawienie zawierające następujące dane; nazwisko i imię wykładowcy, nazwisko i imię studenta, który u danego wykładowcy otrzymał najwięcej ocen niedostatecznych w roku 2013 i jednocześnie w danym roku nie otrzymał od danego wykładowcy ani jednej oceny bardzo dobrej. W zestawieniu uwzględnić tylko tych studentów którzy uzyskali u danego wykładowcy więcej niż 3 oceny niedostateczne.

2

Co już zrobiłeś sam ?
Nie mamy szklanej kuli - jaka jest architektura tablic ?
Jaki silnik bazy?

0

Zadanie jest źle sformułowane. Przy "ex aequo" nie da się wykonać tego zadania.

0

Zrobiłem coś takiego na razie ale wyswietla mi wszyskie wiersze tych samych wykladowcow

select 
w.Imie as Imie_Wykładowcy,
w.Nazwisko as Nazwisko_Wykładowcy,
s.Imie as Imie_Studenta,
s.Nazwisko as Nazwisko_Studenta,
count(o.IdOceny) as licznikndst
from Oceny as o join Wykladowcy as w
on o.IdWykladowcy=w.IdWykladowcy join
Studenci as s on s.IdStudenta=o.IdStudenta
where year(o.DataOceny)=2013
and o.Ocena=2
group by
w.Imie,
w.Nazwisko,
s.Imie ,
s.Nazwisko
2

Dla MS SQL możesz iść w ten sposób przy użyciu CTE (ale możesz zamienić na podzapytania):

WITH liczOceny
as
(SELECT IdWykladowcy, IdStudenta 
	,SUM(CASE WHEN Ocena = 2 THEN 1 ELSE 0 END) Ilosc_2
	,SUM(CASE WHEN Ocena = 5 THEN 1 ELSE 0 END) Ilosc_5
FROM Oceny
WHERE DataOceny = 2013
GROUP BY  IdWykladowcy, IdStudenta 
HAVING SUM(CASE WHEN Ocena = 2 THEN 1 ELSE 0 END)>3
AND SUM(CASE WHEN Ocena = 5 THEN 1 ELSE 0 END) = 0)

, najwiecej2
as
(SELECT lo.IdWykladowcy, IdStudenta 
FROM liczOceny lo
JOIN (SELECT IdWykladowcy, MAX(Ilosc_2) Najwiecej_2 FROM liczOceny GROUP BY IdWykladowcy) mo
ON lo.IdWykladowcy = mo.IdWykladowcy
AND lo.Ilosc_2 = mo.Najwiecej_2)
 
 Select IdWykladowcy, IdStudenta  from najwiecej2

Do ostatniego zapytania już sobie dodajesz imiona i nazwiska jak to zrobiłeś wyżej.

Ps. Pewnie można by to uprościć ale jakoś nie mam weny i taki potworek mi wyszedł ;)

@cerrato: znaczy się jeśli przeniosłeś do ogłoszeń drobnych to kasa mi się należy ? Od razu mówię, że Koron nie przyjmuję (hehe taki sucharek, a co :D )

0

Sum nie powinno sie stosować bo to liczy sume a nie ilosc ocen

0

@ahrad04: zwróć uwagę co on sumuje, bo jak się przyjżysz to okaże się, że to nie jest suma ocen...

0

Jak Panczo napisał sprawdź raz jeszcze co napisałem. Sprawdź co daje wynik:
CASE WHEN Ocena = 2 THEN 1 ELSE 0 END

Poszukaj co robi CASE

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