Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE VIEW NumeroEsordiPatologie AS
- SELECT E.Patologia, PAT.ParteCorpo, COUNT(*) AS NumeroEsordiPatologia
- FROM paziente P
- INNER JOIN
- esordio E ON P.CodFiscale = E.Paziente
- INNER JOIN
- patologia PAT ON E.Patologia = PAT.Nome
- WHERE P.Citta = 'Pisa'
- AND E.DataGuarigione IS NULL -- attualmente affetti
- GROUP BY E.Patologia, PAT.ParteCorpo;
- SELECT D2.ParteCorpo, IF(NP.ParteCorpo IS NOT NULL, SUM(NP.NumeroEsordiPatologia), 0) AS NumPazientiParteCorpo, D.PatologiaMin
- FROM NumeroEsordiPatologie NP
- NATURAL LEFT OUTER JOIN
- (
- SELECT NP2.ParteCorpo, NP2.Patologia AS PatologiaMin-- joina con le parti del corpo
- FROM NumeroEsordiPatologie NP2 NATURAL JOIN esordio E
- INNER JOIN paziente P1 ON E.Paziente = P1.CodFiscale
- WHERE P1.Citta = 'Pisa'
- AND E.DataGuarigione IS NULL
- -- AND MONTH(E.DataEsordio) BETWEEN 1 AND MONTH(CURRENT_DATE)-1
- -- AND YEAR(E.DataEsordio) = YEAR(CURRENT_DATE)
- AND NP2.NumeroEsordiPatologia < ALL ( -- così in caso di ex aequo restituisce null
- SELECT NP3.NumeroEsordiPatologia
- FROM NumeroEsordiPatologie NP3
- WHERE NP3.ParteCorpo = NP2.ParteCorpo
- AND NP2.Patologia <> NP3.Patologia
- )
- GROUP BY NP2.ParteCorpo
- ) AS D
- NATURAL RIGHT OUTER JOIN
- (
- SELECT DISTINCT ParteCorpo
- FROM patologia
- ) AS D2
- GROUP BY D2.ParteCorpo;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement