Baza danych: podstawy MS SQL.
Komendy:
— 1) Wyznaczyć przez ile dni były wypożyczone samochody poszczególnych marek w kolejnych latach:
(Założone zostało że wypożyczenie kończące się w roku następnym od odbioru, wliczone jest dla roku wypożyczenia)
SELECT Marka, datepart(year,data_odd) AS Rok,
case data_odd
when NULL THEN sum(datediff(day,data_wyp,GETDATE()))
else sum(datediff(day,data_wyp,data_odd))
end as „Ilosc dni wypozyczenia”
FROM wypaut2012.dbo.samochody
INNER JOIN wypaut2012.dbo.WYP
ON WYP.NR_SAMOCHODU=SAMOCHODY.NR_SAMOCHODU
group by marka, datepart(year,data_odd)
order by datepart(year,data_odd) desc;
— 2) Wyznaczyć ile było wypożyczeń z poszczególnych miast w kolejnych latach:
SELECT datepart(year,data_wyp) AS Rok, Miasto, count(MIASTO) AS „Ilosc wypozyczen”
from wypaut2012.dbo.WYP
INNER JOIN wypaut2012.dbo.MIEJSCA
on WYP.NR_MIEJSCA_WYP=MIEJSCA.NR_MIEJSCA
GROUP BY MIASTO,datepart(year,data_wyp);
— 3) Wyznaczyć ilości wypożyczeń i odbiorów (łącznie razem) przez poszczególnych pracowników:
(W tabeli pracownicy znaleziono np. 4 Kowalskich Janów, select oparty o to że to są 4 różne osoby (inne miejsce przypisania))
SELECT nr_pracownika AS „ID pracownika”, Imie, Nazwisko, miejsca.Miasto , count(WYP.NR_PRACOW_WYP+WYP.NR_PRACOW_ODD) AS „Ilosc wyp/odbiorow”
FROM wypaut2012.dbo.pracownicy
INNER JOIN wypaut2012.dbo.wyp
ON pracownicy.NR_PRACOWNIKA=wyp.NR_PRACOW_ODD OR pracownicy.NR_PRACOWNIKA=wyp.NR_PRACOW_WYP
INNER JOIN wypaut2012.dbo.MIEJSCA
ON pracownicy.NR_MIEJSCA=miejsca.NR_MIEJSCA
GROUP BY NR_PRACOWNIKA, nazwisko, imie, miejsca.MIASTO
ORDER BY Nazwisko;
— 4) Wyznaczyć w jakich kolorach były najchętniej wypożyczane samochody (odpowiedni porządek przy wyświetlaniu):
SELECT Kolor, count(KOLOR) AS „ilosc wypozyczen”
FROM wypaut2012.dbo.WYP
INNER JOIN wypaut2012.dbo.SAMOCHODY
ON WYP.NR_SAMOCHODU=SAMOCHODY.NR_SAMOCHODU
GROUP BY KOLOR;
— 5) Wyznaczyć średni, maksymalny, minimalny czas trwania wypożyczenia w kolejnych latach:
SELECT datepart(year,data_wyp) AS Rok, max(datediff(day,data_wyp,data_odd)) AS „Max ilosc dni”, MIN(datediff(day,data_wyp,data_odd)) AS „Min ilosc dni”, avg(datediff(day,data_wyp,data_odd)) AS „Srednia ilosc dni”
FROM wypaut2012.dbo.WYP
GROUP BY datepart(year,data_wyp)
ORDER BY datepart(year,data_wyp);
Baza danych: Microsoft SQL Server