commit 8b75ccd3be27836082ca870b0bec72aaae5a6c1b Author: Aelita4 Date: Tue Nov 15 11:28:08 2022 +0100 Lab 4 diff --git a/lab4.sql b/lab4.sql new file mode 100644 index 0000000..8479ab9 --- /dev/null +++ b/lab4.sql @@ -0,0 +1,53 @@ +USE BILBLIOTEKA_2022; + +-- 1. WYŚWIETL DANE O WYPOŻYCZENIA: TYTUŁ KSIĄŻKI, NAZWISKO NAJWAŻNIEJSZEGO AUTORA, +-- NAZWISKO CZYTELNIKA, DATA WYPOŻYCZENIA W FORMACIE STOSOWANYM W USA ORAZ +-- DATA ZWROTU W FORMACIE STOSOWANYM W POLSCE (CONVERT). +SELECT tytul, autor.nazwisko AS autor_nazwisko, czytelnik.nazwisko AS czytelnik_nazwisko, convert(varchar, data_wypozyczenia, 103) AS data_wypozyczenia, convert(varchar, data_zwrotu, 103) AS data_zwrotu FROM ksiazka +INNER JOIN autor_ksiazki ON ksiazka.id_ksiazka=autor_ksiazki.id_ksiazka +INNER JOIN autor ON autor_ksiazki.id_autor=autor.id_autor +INNER JOIN egzemplarz ON ksiazka.id_ksiazka=egzemplarz.id_ksiazka +INNER JOIN wypozyczenie ON egzemplarz.id_egzemplarz=wypozyczenie.id_egzemplarz +INNER JOIN czytelnik ON wypozyczenie.id_czytelnik=czytelnik.id_czytelnik; + +-- 2. WYŚWIETLIĆ NAZWISKO, IMIĘ CZYTELNIKA ORAZ ŚREDNI CZAS POMIĘDZY DATĄ ZWROTU, +-- A DATĄ WYPOŻYCZENIA (DATEDIFF, DLA KSIĄŻEK, KTÓRE ZOSTAŁY ZWRÓCONE). +SELECT wypozyczenie.id_czytelnik FROM czytelnik +INNER JOIN wypozyczenie ON czytelnik.id_czytelnik=wypozyczenie.id_czytelnik +GROUP BY wypozyczenie.id_czytelnik + +-- 3. WYŚWIETL NAZWISKA CZYTELNIKÓW KTÓRZY NIC NIE WYPOŻYCZALI (2 SPOSOBY) +SELECT nazwisko FROM czytelnik +LEFT JOIN wypozyczenie ON czytelnik.id_czytelnik=wypozyczenie.id_czytelnik +WHERE id_wypozyczenie IS NULL + +-- 4. WYŚWIETLIĆ NAZWISKO, IMIĘ CZYTELNIKA, NAZWĘ KSIĄŻKI ORAZ KARĘ +-- (20 GR ZA KAŻDY DZIEŃ) DLA CZYTELNIKÓW PRZETRZYMUJĄCYCH KSIĄŻKI +-- (JEŻELI MINĘŁO WIĘCEJ NIŻ TRZY MIESIĄCE OD DATY WYPOŻYCZENIA). +SELECT imie, nazwisko, +CASE + WHEN data_zwrotu IS NOT NULL THEN ((datediff(day, data_wypozyczenia, data_zwrotu) - 90) * 0.2) + WHEN data_zwrotu IS NULL THEN ((datediff(day, data_wypozyczenia, getdate()) - 90) * 0.2) +END AS kara +FROM wypozyczenie +INNER JOIN czytelnik ON wypozyczenie.id_czytelnik=czytelnik.id_czytelnik + +SELECT datediff(day, data_wypozyczenia, data_zwrotu) FROM wypozyczenie +WHERE data_zwrotu IS NOT NULL + +SELECT ((datediff(day, data_wypozyczenia, getdate()) - 90) * 0.2) FROM wypozyczenie +WHERE data_zwrotu IS NULL + +-- 5. WYŚWIETLIĆ DLA KAŻDEGO WYDAWNICTWA MIESIĘCZNE ZESTAWIENIE ZA OKRES +-- OSTATNICH KILKU LAT ZAWIERAJĄCE INFORMACJE O KWOCIE NA JAKĄ W KAŻDYM +-- MIESIĄCU ZAKUPIONE ZOSTAŁY KSIĄŻKI Z KAŻDEGO WYDAWNICTWA. (DATEPART) + + +SELECT nazwa, ilosc * cena FROM wydawnictwo w1 +INNER JOIN faktura ON w1.id_wydawnictwo=faktura.id_wydawnictwo +INNER JOIN pozycja_faktury ON faktura.id_faktura=pozycja_faktury.id_faktura +WHERE (month(data)) IN ( + SELECT month(data) FROM wydawnictwo w2 + INNER JOIN faktura ON w2.id_wydawnictwo=faktura.id_wydawnictwo + WHERE w1.id_wydawnictwo=w2.id_wydawnictwo +) \ No newline at end of file