Corso di Informatica (parte DB) - ing. Gestionale SVOLGIMENTO PROVA PRATICA DEL 7/06/2010. Il db da utilizzare e' quello denominato "dbfatture" presente sul sito del corso. Nota: se x è un attributo di tipo 'data', per ottenere l'anno di x si puo' fare date_part('year', x) , e per ottenere il mese date_part('month', x); Per ottenere dalla stringa s la sottostringa lunga y caratteri partendo dal carattere di indice x, si utilizza substring( s from x for y) -------------------------------- 1) Per ogni ditta, riportare il numero delle fatture emesse durante i mesi di gennaio e febbraio negli anni dal 2001 al 2010. CREATE OR REPLACE VIEW risposta_1 AS SELECT d.id_ditta, d.rag_sociale, COUNT(*) AS numfatture FROM ditte d INNER JOIN fatture f ON d.id_ditta=f.id_ditta WHERE date_part('year', f.data) BETWEEN 2001 AND 2010 AND (date_part('month', f.data) BETWEEN 1 AND 2) GROUP BY d.id_ditta, d.rag_sociale ; -------------------------------- 2) Modificare il contenuto del database in modo che compaiano almeno quattro ditte con più di due fatture ciascuna nel risultato della query precedente. - -------------------------------- 3) Elencare i clienti il cui cognome inizia con la stessa lettera della provincia in cui risiedono. CREATE OR REPLACE VIEW risposta_3 AS SELECT c.rag_sociale, c.provincia FROM clienti c WHERE substring( c.rag_sociale from 1 for 1) ILIKE substring( c.provincia from 1 for 1) ; -------------------------------- 4) (opzionale) Per ogni mese dell'anno 2007, indicare il numero totale di fatture relative a tale mese che sono presenti nel database. CREATE OR REPLACE VIEW risposta_4 AS SELECT f1.mese, COUNT(*) FROM (SELECT *, date_part('month', f.data) AS mese FROM fatture f) AS f1 WHERE date_part('year', f1.data)=2007 GROUP BY f1.mese ORDER BY f1.mese ;