SQL: Esame di stato 1999: Applicazione - codifica SQL
Dettaglio di una funzione e codifica in SQL
Viene affrontata la parte relativa alla determinazione dei compensi: la prima fase determina
i costi sostenuti per le prestazioni fornite al paziente, la seconda fase la determinazione
dei costi totali per assistito. nella terza fase viene prodotta una tabella che riporta per
ogni codice assistito il costo sostenuto, la regione dove è ubicato l'ospedale e la regione
di residenza dell'assistito.
Per completare la determinazione dei compensi occorrerebbe selezionare dalla tabella precedente
le righe dove le due regioni coincidono e, in modo separato, le righe con le due regioni diverse.
Creare la vista con i costi delle prestazioni:
CREATE VIEW CostiPrestaz
AS SELECT
Assistiti.Codice AS CodAssist,
SUM (Tariffe.Costo) AS CostiPrestazioni
FROM Tariffe, Prestazioni, SDO, Assistiti
WHERE Tariffe.Codice = Prestazioni.CodTariffa
AND SDO.Codice = Prestazioni.CodSDO
AND Assistiti.Codice = SDO.CodAssistito
GROUP BY Assistiti.Codice;
Creare la vista con l'indicazione dei costi totali per ciascun assistito
CREATE VIEW CostiAssistiti
AS SELECT
Assistiti.Codice,
CostoRicovero*(DataFine-DataInizio)+CostiPrestazioni
AS CostoTotale,
Assistiti.CodLocalita AS LocalitaAssist,
Ospedali.CodLocalita AS LocalitaOsped
FROM CostiPrestaz, Assistiti, SDO, Ospedali
WHERE CostiPrestaz.CodAssist=Assistiti.Codice
AND Assistiti.Codice=SDO.CodAssistito
AND Ospedali.Codice=SDO.CodOspedale;
Calcolare i compensi
SELECT
CostiAssistiti.Codice,
CostiAssistiti-CostoTotale,
Regioni.Nome AS RegioneAssistito,
Regioni_l.Nome AS RegioneOspedale
FROM CostiAssistiti, Località, Regioni,
Località AS Località_1, Regioni AS Regioni_1
WHERE CostiAssistiti.LocalitàAssist = Località.codice
AND Regioni.Codice = Località.codRegione
AND CostiAssistiti.Localitaosped, Localita_1.Codice
AND Localita_l.CodRegione = Regioni_l.Codice;