Zad3
Pokaz nazwiska, imiona oraz liczbe wypożyczonych pozycji przez wypożyczającego w roku 2003, którzy wypożyczali powyżej 20 pozycji z czego najmniej 4 ksiazki były wydane przez wyd Bellona oraz co najwyzej 3 przez Helion ( uporzad malejąco wg liczby wypożyczeń )
SELECT a.Nazwisko, a.Imie, sum(a.liczba) as LiczbaWypozyczen
from
(
select W.Nazwisko, w.Imie, count( * ) as liczba
from wypozyczenie wyp, Wypozyczajacy w, PozycjaBiblioteczna Pb, Tytul t, Wydawnictwo Wdw
where w.idwypozyczajacego=wyp.idwypozyczajacego
and wyp.idtytulu=pb.idtytulu
and pb.idtytulu=t.idtytulu
and t.idwydawnictwa=wdw.idwydawnictwa
and wdw.NazwaWydawnictwa='Bellona'
group by W.Nazwisko, w.Imie
having liczba >= 4
union
select W.Nazwisko, w.Imie, count( * ) as liczba
from wypozyczenie wyp, Wypozyczajacy w, PozycjaBiblioteczna Pb, Tytul t, Wydawnictwo Wdw
where w.idwypozyczajacego=wyp.idwypozyczajacego
and wyp.idtytulu=pb.idtytulu
and pb.idtytulu=t.idtytulu
and t.idwydawnictwa=wdw.idwydawnictwa
and wdw.NazwaWydawnictwa='Helion'
group by W.Nazwisko, w.Imie
having liczba <= 3
) a, TYTul t
WHERE datediff(year, t.datawydania, today())=5
group by a.Nazwisko, a.Imie
having LiczbaWypozyczen > 6
order by LiCZbaWypozyczen Desc
zad4
Pokaż średnia liczbe wypożyczeń na wypożyczającego z podzialem na lata 2006 oraz 2007
SELECT w.nazwisko,
(( count(*)*10/(select count(wypozyczenie.idtytulu) from wypozyczenie
where datediff (year, wypozyczenie.Datawypozyczenia, today())=5))*0.1)
as srednia, year(wyp.datawypozyczenia) as rok
from wypozyczajacy w, wypozyczenie wyp
where w.idwypozyczajacego=wyp.idwypozyczajacego
and datediff (year, wyp.Datawypozyczenia, today())=5
group by w.nazwisko, year(wyp.datawypozyczenia)
union
SELECT w.nazwisko,
(( count(*)*10/(select count(wypozyczenie.idtytulu) from wypozyczenie where datediff (year, wypozyczenie.Datawypozyczenia, today())=4))*0.1)
as srednia, year(wyp.datawypozyczenia) as rok
from wypozyczajacy w, wypozyczenie wyp
where w.idwypozyczajacego=wyp.idwypozyczajacego
and datediff (year, wyp.Datawypozyczenia, today())=4
group by w.nazwisko, year(wyp.datawypozyczenia)
zad5
Pokaz nazwiska, imiona wypożyczających oraz liczbe nie zwróconych przez nich pozycji przetrzymywanych powyżej 6m-cy ( malejąco )
SELECT w.nazwisko, w.imie, count(wyp.idtytulu) as liczba
from wypozyczajacy w, wypozyczenie wyp
where w.idwypozyczajacego=wyp.idwypozyczajacego
and datediff ( month, wyp.datawypozyczenia, today())>6
and datediff ( year, wyp.datawypozyczenia, today())>=1
and wyp.datazwrotu is NULL
group by w.nazwisko, w.imie
order by liczba Desc
zad6
Pokaz autorow (imie i nazwisko) z liczba tytułów których sa autorami oraz liczba czasopism gdzie były publikowane ich artykuly
SELECT A.imie, a.nazwisko, count (distinct cz.idczasopisma) as liczbaCZasopism, count (R.idtytulu) as liczbaKsiazek
from Autor a, artykul ar, czasopismo cz, Relationship_5 R
where a.idautora=ar.idautora
and ar.idczasopisma=cz.idczasopisma
and a.idautora=r.idautora
group by A.imie, a.nazwisko