Projects/2BIT/summer-semester/IDS/xnecasr00_xpribik00/mv.sql
2026-04-14 19:28:46 +02:00

24 lines
No EOL
978 B
SQL

CREATE MATERIALIZED VIEW mv_aktivita_citatelov
AS
SELECT
p.ID_pouzivatela,
p.Meno,
p.Priezvisko,
c.Cislo_preukazu,
c.Status AS Status_citatela,
COUNT(v.ID_vypozicky) AS Celkovy_pocet_vypoziciek,
COUNT(CASE WHEN v.Stav IN ('Aktívna','Oneskorená') THEN 1 END) AS Aktivne_vypozicky,
COUNT(CASE WHEN v.Stav = 'Vrátená' THEN 1 END) AS Ukoncene_vypozicky,
COUNT(CASE WHEN v.Stav = 'Oneskorená' THEN 1 END) AS Oneskorene_vypozicky,
ROUND(AVG(NVL(v.Skutocny_datum_vratenia, SYSDATE) - v.Datum_vypozicania)) AS Priemerna_dlzka_vypozicky,
MAX(v.Datum_vypozicania) AS Posledna_vypozicka
FROM xnecasr00.Pouzivatel p
JOIN xnecasr00.Citatel c ON c.ID_pouzivatela = p.ID_pouzivatela
LEFT JOIN xnecasr00.Vypozicka v ON v.ID_pouzivatela = p.ID_pouzivatela
GROUP BY p.ID_pouzivatela, p.Meno, p.Priezvisko, c.Cislo_preukazu, c.Status;
GRANT SELECT ON mv_aktivita_citatelov TO xnecasr00;
BEGIN
DBMS_MVIEW.REFRESH('mv_aktivita_citatelov');
END;