SQL-eksempel 09
|
<< Click to Display Table of Contents >> SQL-eksempel 09 |
![]() ![]()
|
Børn døde i års-interval xx
For baggrund - se NeoBase opgørelser - definitioner og konventioner.
==================================================================================
/* Viser børn, der døde i det anførte årsinterval baseret på udskrivelsesdato og
fordelt på GA-grupper. N.K.febr.2004. */
SELECT
CASE
WHEN np."GA hele uger" < 28 THEN '0: GA < 28'
WHEN np."GA hele uger" >= 28 AND np."GA hele uger" < 32 THEN '1: GA 28-31'
WHEN np."GA hele uger" >= 32 AND np."GA hele uger" < 37 THEN '2: GA 32-36'
WHEN np."GA hele uger" >= 37 AND np."GA hele uger" < 99 THEN '3: GA >= 37'
WHEN np."GA hele uger" = 99 THEN '4: GA ukendt'
END AS "GA gruppe",
np.PersonId
INTO MEMORY Temp
FROM NeoPers np;
--------------------------------------------------------------------------
SELECT DISTINCT mt2."GA gruppe", [Børn døde 1996-2004]
FROM MEMORY Temp mt2
LEFT JOIN
(SELECT mt."GA gruppe", COUNT(n2.PersonId) AS "Børn døde 1996-2004"
FROM MEMORY Temp mt
JOIN NeoBase2 n2
ON (n2.PersonId = mt.PersonId)
WHERE EXTRACT(YEAR FROM n2.Udskrivelsesdato) BETWEEN '1996' AND '2004'
AND n2."Tilstand ved udskrivelsen" = '3'
GROUP BY
[GA gruppe])
ON mt2."GA gruppe" = mt."GA gruppe"
UNION
SELECT
'5: Sum' AS "GA gruppe",
COUNT(n2.PersonId)
FROM Neobase2 n2
WHERE EXTRACT(YEAR FROM n2.Udskrivelsesdato) BETWEEN '1996' AND '2004'
AND n2."Tilstand ved udskrivelsen" = '3'
ORDER BY
[GA gruppe];
==================================================================================
SQL-eksemplet
Specifikke målsætning: opgørelse af antal børn, der er døde i et valgt årstalsinterval og fordelt på gestationsalder-grupper.
Som i de andre eksempler er repræsentationen af de ovenfor viste gestationsalder grupper i det øverste SQL-udtryk afhængig af, at de enkelte intervaller faktisk er repræsenteret ved individer i databasen men ikke nødvendigvis ved den søgte parameter-værdi. Hvis en afdeling helt usædvanligt aldrig registrerer børn med ukendt gestationsalder men som princip ved uoplyst gestationalder "sjusser" sig til en specifik alder, vil gruppen "ukendt" ikke blive repræsenteret i udtræk med denne metode - dvs. heller ikke som gruppe uden data.
Ved opgørelser på parametre med få individer som f.eks. mortalitet vil det ofte være ønskeligt i sine SQL-udtræk også at få vist de gestationsalder-intervaller, der er repræsenteret i databasen men uden individer med den givne parameter i den givne GA-gruppe.
For at opnå dette er der i ovenstående eksempel indlagt både en LEFT join (fremfor almindelig JOIN) og en sub-query - LEFT for at medtage alle GA grupper uanset evt. null værdier på højresiden af JOIN'en, og sub-query for ikke at give fejl i WHERE udsagnet hvor den anvendte LEFT join returnerer NULL værdier på højre side.
Den viste konstruktion kunne også anvendes på de øvrige SQL-udtryk, hvor der optræder "huller" sv.t. intervaller hvor den søgte parameter ikke er repræsenteret med værdier.
Med og uden den anvendte LEFT JOIN og sub-query metode kunne et udtræk se således ud:
_____________________________
27-10-2017 - © 2003-2017 Niels Knabe