Bazy danych kolokwium SQL
1 | S t r o n a
Bazy danych kolokwium SQL
Model konceptualny.
Dzialy_Wypozyczalni
Dzial
Wypozyczalni a
Gatunek
IdDzialu
Integer
IdWypozyczalni Integer
IdGatunku Integer
NazwaDzialu Characters (30)
NazwaWypozyczalni Characters (30)
NazwaGatunku Characters (30)
T elefon Characters (20)
Identifier_1
Identifier_1
KodPocztowy Characters (6)
Poczta Characters (30)
Ulica Characters (40)
NrLokalu Characters (10)
Gatunek_T ytul
Identifier_1
Nosnik
T utul
T ytuly_Dzialu
IdNosnika Integer
IdT ytulu Integer
NazwaNosnika Characters (20)
NazwaT ytulu Characters (30)
Identifi er_1
RokWydania Integer
Identifi er_1
0,n
Egzemplarz
Egzempl arze_T ytulu
Nosnik_Egzemplarz
Aktor
IdEgzemplarza Integer
IdAktora Integer
Identifier_1
Nazwisko Characters (30)
Imie Characters (30)
Narodowosc Characters (20)
0,1
Identifier_1
Wypozyczenie
Obsada
DataWypozyczenia Date
0,n
NazwaRol i Characters (30)
Egzemplarz_Hi storiaWyp
0,n
0,n
Klient
RodzajRoli
IdKlienta Integer
HistoriaWypozyczen
IdRodzajuRoli Integer
Nazwisko Characters (30)
DataWypozyczenia Date
NazwaRodzaj uRoli Characters (20)
Imie Characters (30)
DataZwrotu Date
T elefon Characters (20)
Klient_HistoriaWyp
Identifier_1
KodPocztowy Characters (6)
Poczta Characters (30)
Ulica Characters (40)
NrLokalu Characters (10)
Identifier_1
2 | S t r o n a
Bazy danych kolokwium SQL
Model fizyczny.
Dzial
IdWypozyczalni integer
Gatunek
Wypozyczalnia
IdDzialu integer
IdGatunku integer
IdWypozyczalni integer
NazwaDzialu char(30)
NazwaGatunku char(30)
NazwaWypozyczalni char(30)
Telefon char(20)
KodPocztowy char(6)
Gatunek_Tytul
Poczta char(30)
Ulica char(40)
IdGatunku integer
NrLokalu char(10)
IdTytulu integer
Tutul
Nosnik
IdTytulu integer
IdNosnika integer
IdWypozyczalni integer
NazwaNosnika char(20)
Egzemplarz
IdDzialu integer
IdNosnika integer NazwaTytulu char(30)
IdTytulu integer RokWydania integer
IdEgzemplarza integer
IdKlienta integer
DataWypozyczenia date
Aktor
IdAktora integer
Nazwisko char(30)
Imie char(30)
Narodowosc char(20)
Obsada
IdTytulu integer
IdAktora integer
IdRodzajuRoli integer
NazwaRoli char(30)
Klient
IdKlienta integer
Nazwisko char(30)
Imie char(30)
Telefon char(20)
RodzajRoli
HistoriaWypozyczen
KodPocztowy char(6)
IdRodzajuRoli integer
IdNosnika integer
Poczta char(30)
NazwaRodzajuRoli char(20)
IdTytulu integer
Ulica char(40)
IdEgzemplarza integer
NrLokalu char(10)
IdKlienta integer
DataWypozyczenia date
DataZwrotu date
3 | S t r o n a
Bazy danych kolokwium SQL
Zapytania w SQL
SELECT W.IdWypozyczalni, SELECT T.NazwaTytulu Nazwa, SELECT K.Nazwisko, K.Imie,
W.NazwaWypozyczalni, Tab.L_Tytulow, H.DataWypozyczenia DataWyp, MAX(tab1.Liczba) + MIN(tab1.Liczba)
Tab.L_Egzemplarzy H.DataZwrotu DataZwr LiczbaWyp
FROM ( FROM HistoriaWypozyczen H, Egzemplarz FROM
select W.IdWypozyczalni, E, Tutul T (
count(DISTINCT E.idTytulu) L_Tytulow, WHERE H.IdKlienta =2 AND SELECT K.idKlienta,
count(E.idTytulu) L_Egzemplarzy H.IdEgzemplarza = E.IdEgzemplarza AND COUNT(E.idEgzemplarza) Liczba
FROM Egzemplarz E, Tutul T, T.IdTytulu = E.IdTytulu FROM Klient K LEFT JOIN Egzemplarz E
Wypozyczalnia W UNION ON
WHERE T.IdWypozyczalni = SELECT T.NazwaTytulu, K.idKlienta = E.IdKlienta
W.IdWypozyczalni AND T.IdTytulu = E.DataWypozyczenia, NULL GROUP BY K.idKlienta
E.IdTytulu FROM Egzemplarz E, Tutul T UNION
GROUP BY W.IdWypozyczalni WHERE E.IdKlienta = 2 AND E.IdTytulu SELECT K.idKlienta,
) Tab, Wypozyczalnia W = T.IdTytulu COUNT(H.idEgzemplarza) Liczba
WHERE Tab.idWypozyczalni = ORDER BY DataWyp DESC, DataZwr ASC FROM Klient K LEFT JOIN
W.IdWypozyczalni HistoriaWypozyczen H ON
ORDER BY Tab.L_Tytulow DESC, K.IdKlienta = H.IdKlienta
Tab.L_Egzemplarzy DESC GROUP BY K.IdKlienta
) tab1, Klient K
Lub WHERE K.IdKlienta = tab1.idKlienta
GROUP BY K.Nazwisko, K.Imie
select W.IdWypozyczalni, ORDER BY LiczbaWyp DESC
W.NazwaWypozyczalni,
count(E.IdTytulu) L_egzemplarzy,
count(DISTINCT E.IdTytulu
) L_tytulow
FROM Wypozyczalnia W, Egzemplarz E,
Tutul T
WHERE W.IdWypozyczalni =
T.IdWypozyczalni AND T.IdTytulu =
E.IdTytulu
GROUP BY W.IdWypozyczalni,
W.NazwaWypozyczalni
ORDER BY L_tytulow DESC,
L_egzemplarzy DESC
4 | S t r o n a
Bazy danych kolokwium SQL
ZADANIA z SQL a. Model danych Kino.
Sala
kino_sala
Kino
IdSali I
IdKina I
NazwaSali A30
NazwaKina A30
Klimatyzacja I
KodPocztowy A6
Miejscowosc A30
Sala_miejsce
Ulica A30
Sala_Seans
Nr A15
telefon A20
Seans Miejsce
IdSeansu I Rzad I
SeansData DT Miejsce I
Film_Seans
Status A1 Status A1
0,n
Film
0,n
0,n 0,n
IdFilmu I
NazwaFilmuPL A50
NazwaFilmuOrg A50
CzasTrwania T
HistoriaBilet
Bilet
Cena N15,2
0,n
Cena N15,2
Rezerwacja A1
Rezerwacja A1
Rola
NazwaRoli A30
Dane o biletach
(Bilet) po każdym
dniu są przenoszone
do HistoriiBiletu
0,n
0,n
0,n
0,n
Osoba
TypBiletu
IdOsoby I TypRoli
Nazwisko A30
IdTypuBiletu I
IdTypuRoli I
Imie A30
NazwaTypuBiletu A30
NazwaTypuRoli A30
DataUr D
1. Przekształcić model konceptualny danych do modelu fizycznej bazy danych.
5 | S t r o n a
Bazy danych kolokwium SQL
Zapytania SQL:
2. Lista pierwszych 10 kin (id_kina, NazwaKina) z liczbą sal i łączną liczbą miejsc kinowych, tylko tych kin, które posiadają ogólną liczbę miejsc
większą od 500; listę uporządkować wg liczby miejsc malejąco.
3. Lista filmów(id_filmu,NazwaFilmuPL) z liczbą sprzedanych biletów na dany film; listę uporządkować wg liczby sprzedanych biletów.
4. Wykaz sal (idSali,Nazwalali,NazwaKina) i średnie wypełnienie danej sali w poprzednim roku; uporządkować malejąco wg średniego
wypełnienia Sali.
5. Wykaz biletów sprzedanych na film o nazwie Shrek w kinach w Warszawie.
6. Wykaz typów biletu (idTypuBiletu, NazwaTypuBiletu) z procentowym udziałem we wszystkich sprzedanych biletach.
6 | S t r o n a
Bazy danych kolokwium SQL
Model konceptualny.
kino
sala
id_kina Integer
NazwaKina Characters (20)
Id_sali Integer
Kod_pocztowy Characters (6)
NazwaSali Characters (30)
Miejscowość Characters (30)
Klimatyzacja Integer
Ulica Characters (30)
Identifier_1
kino_sala
nr Characters (16)
telefon Characters (20)
Identifier_1
Sala_seans Sala_miejsce
seans Miejsce
Film
Rząd Integer
Id_Filmu Integer id_seansu Integer
seans_data Date Miejsce Integer
NazwaFilmuPl Characters (50)
Film_Seans
Status Characters (1) Status Characters (1)
NazwaFimuOrg Characters (50)
Czas_Trwania Time
Identifier_1 Identifier_1
0,n 0,n
Identifier_1
0,n
0,n
0,n
HistoriaBilet
Cena Number (15,2)
Bilet
Rezerwacja Characters (1)
Cena Number (15,2)
Rezerwacja Characters (1)
Rola
NazwaRoli Characters (30)
0,n
0,n
TypBiletu
0,n
0,n IdTypuBiletu Integer
NazwaTypuBiletu Characters (30)
TypRoli
osoba
Identifier_1
idTypuRoli Integer
IdOsoby Integer NazwaTypuRoli Characters (30)
Nazwisko Characters (30)
Identifier_1
Imie Characters (30)
Data_ur Date
Identifier_1
7 | S t r o n a
Bazy danych kolokwium SQL
Model fizyczny.
kino
sala
id_kina integer
id_kina integer
NazwaKina char(20)
Id_sali integer
Kod_pocztowy char(6)
NazwaSali char(30)
Miejscowość char(30)
Klimatyzacja integer
Ulica char(30)
nr char(16)
telefon char(20)
seans
id_seansu integer
Miejsce
Id_Filmu integer
Film
id_kina integer
id_kina integer
Id_sali integer
Id_Filmu integer
Id_sali integer
Rząd integer
NazwaFilmuPl char(50)
seans_data date
Miejsce integer
NazwaFimuOrg char(50)
Status char(1)
Status char(1)
Czas_Trwania time
Bilet
HistoriaBilet
id_seansu integer
id_seansu integer
id_kina integer
id_kina integer
Id_sali integer
Id_sali integer
Rola
Rząd integer
Rząd integer
Miejsce integer
Id_Filmu integer
Miejsce integer
IdTypuBiletu integer
idTypuRoli integer
IdTypuBiletu integer
Cena numeric(15,2)
IdOsoby integer
Cena numeric(15,2)
Rezerwacja char(1)
NazwaRoli char(30)
Rezerwacja char(1)
TypBiletu
IdTypuBiletu integer
NazwaTypuBiletu char(30)
TypRoli
osoba
idTypuRoli integer
NazwaTypuRoli char(30)
IdOsoby integer
Nazwisko char(30)
Imie char(30)
Data_ur date
8 | S t r o n a
Bazy danych kolokwium SQL
Zapytania w SQL
SELECT TOP 10 K.id_kina, K.NazwaKina, SELECT Fi.Id_Filmu, Fi.NazwaFilmuPl,
COUNT(DISTINCT S.Id_sali) LiczbaSal, SUM(tab1.LiczbaBiletow1 +
SELECT k.id_kina,k.nazwakina,
( tab2.Liczbabiletow2)
s.id_sali,
SELECT COUNT(*) LiczbaSprzedanych
(count(*)*10/count(distinct
FROM kino Ki, Miejsce M FROM
hb.id_seansu))*0.1 as srednia
WHERE Ki.id_kina = M.id_kina AND (
FROM kino k, sala s, historiabilet
Ki.id_kina = K.id_kina SELECT F.Id_Filmu, F.NazwaFilmuPl,
hb, seans se
) LiczbaMiejsc COUNT(B.id_seansu) LiczbaBiletow1
WHERE k.id_kina = s.id_kina and
FROM kino K, sala S FROM Film F, seans S, Bilet B
hb.id_kina = s.id_kina and
WHERE K.id_kina = S.id_kina WHERE F.Id_Filmu = S.Id_Filmu AND
hb.id_sali = s.id_sali and
GROUP BY K.id_kina, K.NazwaKina S.id_seansu = B.id_seansu
se.id_seansu = hb.id_seansu and
HAVING LiczbaMiejsc>0 GROUP BY F.Id_Filmu, F.NazwaFilmuPl)
datediff(year, se.seans_data,
ORDER BY LiczbaMiejsc DESC tab1,
today()) = 1
(
GROUP BY k.id_kina, s.id_sali,
SELECT F.Id_Filmu, F.NazwaFilmuPl,
k.nazwakina
COUNT(H.id_seansu) Liczbabiletow2
ORDER BY srednia desc
FROM Film F, seans S, HistoriaBilet H
WHERE F.Id_Filmu = S.Id_Filmu AND
S.id_seansu = H.id_seansu
GROUP BY F.Id_Filmu, F.NazwaFilmuPl
) tab2, Film Fi
WHERE tab1.Id_Filmu = tab2.Id_Filmu
UWAGA:
AND tab1.Id_Filmu = Fi.Id_Filmu AND
datediff(year, dataWczesniejsza,
tab2.Id_Filmu = Fi.Id_Filmu
DataPozniejsza) zwraca nam różnicę
GROUP BY Fi.Id_Filmu, Fi.NazwaFilmuPl
zgodnie z podanym parametrem, w
ORDER BY LiczbaSprzedanych DESC
naszym przypadku jest to year.
9 | S t r o n a
Bazy danych kolokwium SQL
Zapytania w SQL
SELECT B.id_seansu, B.id_kina,
B.Id_sali, B.Rzą_d, B.Miejsce, SELECT tab1.IdTypuBiletu,
B.IdTypuBiletu, B.Rezerwacja tab1.NazwaTypuBiletu,
FROM Bilet B, Film F, seans S, kino (SUM(liczba)*10/(
K, sala SA (SELECT COUNT(bilet.idtypubiletu)
WHERE TRIM(F.NazwaFilmuPl) = 'Shrek' FROM Bilet) +
AND F.Id_Filmu = S.Id_Filmu AND (SELECT
TRIM(K.Miejscowoś_ć_) = 'Warszawa' COUNT(HistoriaBilet.IdTypuBiletu)
AND B.id_seansu = S.id_seansu FROM HistoriaBilet)))*0.01 Procentowo
AND B.id_kina = K.id_kina AND FROM
SA.Id_sali = B.Id_sali (
UNION SELECT T.IdTypuBiletu,
SELECT HB.id_seansu, HB.id_kina, T.NazwaTypuBiletu,
HB.Id_sali, HB.Rzą_d, HB.Miejsce, COUNT(B.IdTypuBiletu) liczba
HB.IdTypuBiletu, HB.Rezerwacja FROM Bilet B, TypBiletu T
FROM HistoriaBilet HB, Film F, seans WHERE B.IdTypuBiletu = T.IdTypuBiletu
S, kino K, sala SA GROUP BY T.IdTypuBiletu,
WHERE TRIM(F.NazwaFilmuPl) = 'Shrek' T.NazwaTypuBiletu
AND F.Id_Filmu = S.Id_Filmu AND UNION
TRIM(K.Miejscowoś_ć_) = 'Warszawa' SELECT T.IdTypuBiletu,
AND HB.id_seansu = S.id_seansu T.NazwaTypuBiletu,
AND HB.id_kina = K.id_kina AND COUNT(HB.IdTypuBiletu) liczba
SA.Id_sali = HB.Id_sali FROM TypBiletu T, HistoriaBilet HB
WHERE HB.IdTypuBiletu =
T.IdTypuBiletu
GROUP BY T.IdTypuBiletu,
T.NazwaTypuBiletu) tab1
GROUP BY tab1.IdTypuBiletu,
tab1.NazwaTypuBiletu
10 | S t r o n a
Bazy danych kolokwium SQL
11 | S t r o n a
Bazy danych kolokwium SQL
Model konceptualny.
Usługi
Bank
id_uslugi Integer
typ Characters (1) jest
nazwa_uslugi Variable characters (50)
kapital Money (50,2)
Identifier_1
Kantor
Typ_usługi
id_typu_uslugi Integer
nazwa_typu Variable characters (50)
posiada
Placowka_Finansowa
czy_kapitalowa Boolean
id Integer
Inheritance_2
Identifier_1
nazwa Variable characters (40)
adres Variable characters (40)
posiada_kurs
miasto Variable characters (40)
realizuje
Identifier_1
Kurs_waluty
Waluta_kurs_sredni_NBP
oferuj
kurs_kupna Money (50,2)
wartosci_notowania Money (50,2)
kurs_sprzedazy Money (50,2)
ilosc Integer
ilosc Integer
Operacje_finansowe
id_operacji Integer
nazwa_operacji Variable characters (50)
Inheritance_1 opis Variable characters (200)
Identifier_1
Waluta
notowania_walut
Notowania_waluty
id_waluty Integer
data_notowania_walut Date
kraj_waluty Variable characters (3)
Identifier_1
Identifier_1
12 | S t r o n a
Bazy danych kolokwium SQL
Model fizyczny.
Bank
id integer
Usługi
typ char(1)
id_uslugi integer
kapital numeric(50,2)
nazwa_uslugi varchar(50)
nazwa varchar(40)
Kantor
adres varchar(40)
id integer miasto varchar(40)
Typ_usługi
nazwa varchar(40)
id_typu_uslugi integer
adres varchar(40)
id_uslugi integer
miasto varchar(40)
posiada nazwa_typu varchar(50)
posiada
czy_kapitalowa smallint
id integer
id integer
id_uslugi integer
id_uslugi integer
Kurs_waluty
oferuj
id_waluty integer
Waluta_kurs_sredni_NBP
id integer data_notowania_walut date
id_waluty integer
id_waluty integer id integer
data_notowania_walut date
Pla_id integer Operacje_finansowe
wartosci_notowania numeric(50,2)
kurs_kupna numeric(50,2)
id_operacji integer
ilosc integer
kurs_sprzedazy numeric(50,2)
id integer
ilosc integer
Pla_id integer
nazwa_operacji varchar(50)
opis varchar(200)
Waluta
id_waluty integer
kraj_waluty varchar(3)
13 | S t r o n a
Bazy danych kolokwium SQL
Zapytania w SQL
SELECT TOP 2 K.id, COUNT(O.id_waluty) SELECT TOP 10 B.id, COUNT(P.id) SELECT K.id Kantor,
LiczbaWalut Liczba_kap YEAR(K.data_notowania_walut) Rok,
FROM Kantor K, oferuj O FROM Bank B, posiada2 P, Typ_usłYugi MONTH(K.data_notowania_walut)
WHERE K.id = O.id T miesiac, AVG(K.kurs_kupna)
GROUP BY K.id WHERE B.id = P.id AND P.id_uslugi = Sredni_kurs_kup,
ORDER BY LiczbaWalut DESC T.id_uslugi AVG(K.kurs_sprzedazy)
AND T.czy_kapitalowa = 1 Sredni_kurs_sprz, MAX(K.kurs_kupna)
GROUP BY B.id max_kup, MIN(K.kurs_sprzedazy)
ORDER BY Liczba_kap DESC min_sprz, tab1.sprzedaz sprzedaz1
FROM Kurs_waluty K,
SELECT B.id BANK,
(SELECT TOP 2 K.id Kantor,
YEAR(K.data_notowania_walut) rok,
YEAR(K.data_notowania_walut) Rok,
MONTH(K.data_notowania_walut)
MONTH(K.data_notowania_walut)
miesiac, K.id_waluty,
miesiac, K.kurs_sprzedazy sprzedaz,
-((AVG(K.kurs_kupna) -
COUNT(K.kurs_sprzedazy) czestosc
AVG(K.kurs_sprzedazy))) spread, -
FROM Kurs_waluty K
((MIN(K.kurs_kupna) -
WHERE K.id = 1
MAX(K.kurs_sprzedazy))) max_roznica
GROUP BY Kantor, Rok, miesiac,
FROM Kurs_waluty K, Bank B
K.kurs_sprzedazy
WHERE B.id = K.id
ORDER BY czestosc DESC) tab1
GROUP BY B.id, rok, miesiac,
WHERE K.id = 1 AND tab1.Kantor =1 AND
k.id_waluty
tab1.Rok = Rok AND tab1.miesiac =
miesiac
GROUP BY K.id, Rok, miesiac,
sprzedaz1
(odrobinę naciągane)
14 | S t r o n a
Bazy danych kolokwium SQL
Wypozyczajacy
Osoba
Limit Integer
IdOsoby Integer
Nazwisko Characters (30)
Autor
Imie Characters (30)
DataUr Date
0,n
PI_Osoba
Tytul
Wypozyczenie
IdTytulu Integer
DataWypozyczenia Date
Tytul Characters (50)
DataZwrotu Date
DataWydania Date
...
PI_Tytul
Gatunek
IdGatunku Integer
NazwaGatunku Characters (50)
Identifier_1
0,n
Wydawnictwo
PozycjaBiblioteczna
IdWydawnictwa Integer
IdPozycjiBibliotecznej Integer
NazwaWydawnictwa Characters (50)
PI_PozycjaBiblioteczna
PI_Wydawnictwo
Model danych Biblioteka.
1. Pokaż gatunki (IdGatunku, NazwaGatunku) oraz liczbę tytułów danego gatunku.
2. Pokaż nazwiska, imiona oraz liczbę wypożyczonych pozycji przez wypożyczającego w roku 2003, którzy wypożyczyli powyżej 20 pozycji (uporządko`wad malejąco wg liczby
wypożyczeo).
3. Pokaż średnią liczbę wypożyczeń na wypożyczającego w 2002 roku.
4. Pokaż nazwiska, imiona wypożyczających oraz liczbę nie zwróconych przez nich pozycji, przetrzymywanych powyżej 6 miesięcy (uporządkowad malejąco wg liczby nie zwróconych
pozycji).
5. Pokaż autorów (nazwisko, imię) oraz liczbę tytułów, których są autorami (uporządkowad malejąco wg liczby tytułów, których są autorami).
15 | S t r o n a
Bazy danych kolokwium SQL
Model konceptualny.
Osoba
IdOsoby Integer
Nazwisko Characters (30)
Imie Characters (30)
DataUr Date
Inheritance_2
PI_IdOsoby
Wypozyczajacy Autor
Limit Integer
Relationship_4
0,n
Wypozyczenie
DataWyp Date
Tytul
DataZwr Date
IdTytulu Integer
Tytul Characters (30)
Relationship_3
DataWydania Date
PI_IdTytulu
0,n
Relationship_2
Relationship_1
PozycjaBiblioteczna
IdPB Integer
Gatunek
Wydawnictwo
PI_IdPB
IdGatunku Integer
IdWydawnictwa Integer
NazwaGatunku Characters (30)
NazwaWydawnictwa Characters (30)
PI_IdGatunku
PI_IdWydawnictwa
16 | S t r o n a
Bazy danych kolokwium SQL
Model fizyczny.
Wypozyczajacy
IdOsoby integer
Limit integer
Relationship_4
Nazwisko char(30)
FK_WYPOZYCZ_WYPOZYCZE_WYPOZYCZ IdTytulu integer
Imie char(30)
IdOsoby integer
DataUr date
Autor
Wypozyczenie
IdOsoby integer
IdOsoby integer
Nazwisko char(30)
IdTytulu integer
Tytul
Imie char(30)
IdPB integer
FK_RELATION_RELATIONS_AUTOR
DataUr date
IdTytulu integer
DataWyp date
IdGatunku integer
FK_RELATION_RELATIONS_TYTUL
DataZwr date
IdWydawnictwa integer
Tytul char(30)
DataWydania date
FK_TYTUL_RELATIONS_GATUNEK
FK_WYPOZYCZ_WYPOZYCZE_POZYCJAB
FK_TYTUL_RELATIONS_WYDAWNIC
PozycjaBiblioteczna
FK_POZYCJAB_RELATIONS_TYTUL
IdTytulu integer
Gatunek
Wydawnictwo
IdPB integer
IdGatunku integer
IdWydawnictwa integer
NazwaGatunku char(30)
NazwaWydawnictwa char(30)
17 | S t r o n a
Bazy danych kolokwium SQL
Zapytania w SQL
SELECT G.IdGatunku, SELECT W.IdOsoby, MAX(W.Nazwisko) SELECT tab1.Nazwisko, tab1.Imie,
MAX(G.NazwaGatunku) NazwaGatunku, Nazwisko, MIN(W.Imie) Imie, tab1.LiczbaTytulow
COUNT(T.IdTytulu) LiczbaTytulow (COUNT(D.IdPB)*10000/365)*0.0001 FROM(SELECT A.IdOsoby,
FROM Gatunek G LEFT JOIN Tytul T sredniaLW MAX(A.Nazwisko) Nazwisko, MIN(A.Imie)
ON(G.IdGatunku = T.IdGatunku) FROM Wypozyczajacy W LEFT JOIN Imie, COUNT(R.IdTytulu) LiczbaTytulow
GROUP BY G.IdGatunku Wypozyczenie D ON (W.IdOsoby = FROM Autor A LEFT JOIN Relationship_4
D.IdOsoby) R ON(A.IdOsoby= R.IdOsoby)
WHERE YEAR(D.DataWyp) = 2003 GROUP BY A.IdOsoby
GROUP BY W.IdOsoby ORDER BY LiczbaTytulow DESC) tab1
SELECT W.IdOsoby, MAX(W.Nazwisko) SELECT W.IdOsoby, MAX(W.Nazwisko)
Nazwisko, MAX(W.Imie) Imie, Nazwisko, MAX(W.Imie) Imie,
COUNT(D.IdPB) LiczbaWypozyczen COUNT(D.IdPB) NieZwrocone
FROM Wypozyczajacy W INNER JOIN FROM Wypozyczajacy W INNER JOIN
Wypozyczenie D ON(W.IdOsoby = Wypozyczenie D ON(W.IdOsoby =
D.IdOsoby) INNER JOIN Tytul T D.IdOsoby)
ON(D.IdTytulu = T.IdTytulu) WHERE DATE(D.DataWyp)<=DATE(NOW(*)-
WHERE YEAR(D.DataWyp) = 2003 183) AND D.DataZwr IS NULL
GROUP BY W.IdOsoby GROUP BY W.IdOsoby
HAVING LiczbaWypozyczen>=1 ORDER BY NieZwrocone DESC
ORDER BY LiczbaWypozyczen DESC
18 | S t r o n a
Bazy danych kolokwium SQL
19 | S t r o n a
Bazy danych kolokwium SQL
Model konceptualny.
Marka
TypPojazdu
Adres
IdMarki Integer IdTP Integer
NazwaMarki Characters (30) KodPocztowy Characters (6)
NazwaTP Characters (30)
Poczta Characters (50)
Identifier_1
Identifier_1