SQL-eksempel 09

<< Click to Display Table of Contents >>

Navigation:  NeoBase SQL-eksempler >

SQL-eksempel 09

Previous pageReturn to chapter overviewNext page

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:

 

GAGROUPS_BLANKS

GAGROUPS_NO_BLANKS

>> SQL-eksempel 10

_____________________________

27-10-2017 - © 2003-2017 Niels Knabe