Corso di Informatica (parte DB) - ing. Gestionale SVOLGIMENTO PROVA PRATICA DEL 1/12/2010. Il db da utilizzare e' quello denominato "dbfatture" presente sul sito del corso. Nota: se x รจ un attributo di tipo 'date', per ottenere l'anno di x si puo' fare date_part('year', x) , e per ottenere il mese date_part('month', x). Per concatenare due stringhe si utilizza l'operatore || (es: 'esa' || 'me'); 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) Elencare (in ordine alfabetico per ragione sociale) i clienti la cui ragione sociale contenga almeno la prima o la seconda lettera della rispettiva provincia (non distinguendo tra maiuscole e minuscole). CREATE OR REPLACE VIEW risposta_1 AS SELECT c.rag_sociale FROM clienti c WHERE c.rag_sociale ILIKE '%'||substring(c.provincia from 1 for 1)||'%' OR c.rag_sociale ILIKE '%'||substring(c.provincia from 2 for 1)||'%' ORDER BY c.rag_sociale ; -------------------------------- 2) Elencare le ragioni sociali delle ditte che hanno fatto almeno una fattura al cliente 7 nel mese di aprile, relativamente al periodo 2007-2010 CREATE OR REPLACE VIEW risposta_2 AS SELECT DISTINCT d.rag_sociale, d.id_ditta FROM ditte d INNER JOIN fatture f ON d.id_ditta=f.id_ditta WHERE date_part('year',f.data) BETWEEN 2007 AND 2010 AND date_part('month',f.data) = 4 AND f.id_cliente = 7 ; -------------------------------- 3) Relativamente al periodo 2000-2008, riportare per ogni anno il numero totale delle fatture emesse dalle ditte in provincia di Lucca. CREATE OR REPLACE VIEW risposta_3 AS SELECT x.anno, COUNT(*) FROM ( SELECT date_part('year',f.data) AS anno FROM ditte d INNER JOIN fatture f ON d.id_ditta=f.id_ditta WHERE date_part('year',f.data) BETWEEN 2000 AND 2008 AND d.provincia ILIKE 'LU' ) AS x GROUP BY x.anno ;