Come estrarre numero assistiti per gruppi di età (Postgres)
5 partecipanti
Pagina 1 di 1
Come estrarre numero assistiti per gruppi di età (Postgres)
Buonasera.
Dovrei inviare a Influnet il numero degli assistiti divisi per gruppi di età: 00-04 aa, 05-14 aa, 15-24 aa, 25-44 aa, 45-64 aa, 65 aa e oltre.
Come effettuare la estrazione? Lavoro con Postgres
Grazie in ogni caso
Doctoraterni
doctoraterni- Nuovo Membro
- Messaggi : 39
Punti : 4980
Voti per importanza dei messaggi : 13
Data d'iscrizione : 29.05.11
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Prova con :doctoraterni ha scritto:Buonasera.Dovrei inviare a Influnet il numero degli assistiti divisi per gruppi di età: 00-04 aa, 05-14 aa, 15-24 aa, 25-44 aa, 45-64 aa, 65 aa e oltre.Come effettuare la estrazione? Lavoro con PostgresGrazie in ogni casoDoctoraterni
SELECT InitCap( u.nome) As mmg , u.userid ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 < 5 )
_ass_under_5_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 5 And 14.99 )
_ass_5_14_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 15 And 24.99 )
_ass_15_24_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 25 And 44.99 )
_ass_25_44_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 45 And 64.99 )
_ass_45_64_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Right Outer Join v_utenti u On n.pa_medi = u.userid Where p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 > 64.99 )
_ass_over_64_
FROM v_utenti u WHERE u.nome ILIKE '%'
ORDER BY 1
Verifica le condizioni di ricerca ; inserire il nome Utente appropriato .
Saluti , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
La proverò appena libero. Ti farò sapere
Ti ringrazio molto.
Doctoraterni
Ti ringrazio molto.
Doctoraterni
doctoraterni- Nuovo Membro
- Messaggi : 39
Punti : 4980
Voti per importanza dei messaggi : 13
Data d'iscrizione : 29.05.11
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
E' perfetta.
Ancora grazie.
Doctoraterni
Ancora grazie.
Doctoraterni
doctoraterni- Nuovo Membro
- Messaggi : 39
Punti : 4980
Voti per importanza dei messaggi : 13
Data d'iscrizione : 29.05.11
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
L'estrazione del medico in medicina di gruppo dà sempre gli stessi numeri cumulativi. Inoltre chiedo come riportare, per i medici che hanno doppio nome, il proprio nome al posto del simbolo %.
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Ciao Renato , non è semplice suggerire una soluzione ( Non potendo fare le Prove su un MillePS MultiUtente e con un versione old di MW) ;drtulino ha scritto:L'estrazione del medico in medicina di gruppo dà sempre gli stessi numeri cumulativi. Inoltre chiedo come riportare, per i medici che hanno doppio nome, il proprio nome al posto del simbolo %.
per iniziare con i Test , prova con :
SELECT InitCap( u.nome) As mmg , u.userid AS m_id , u.codice_regionale AS ssr_code ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 < 5 )
_ass_under_5_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 5 And 14.99 )
_ass_5_14_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 15 And 24.99 )
_ass_15_24_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 25 And 44.99 )
_ass_25_44_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 45 And 64.99 )
_ass_45_64_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 > 64.99 )
_ass_over_64_,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null )
_ass_0_100_
FROM v_utenti u GROUP BY u.nome , u.userid , u.codice_regionale
ORDER BY 1 LIMIT 15 OFFSET 0
se per caso dovesse funzionare, ev. eliminare le colonne superflue ( ad es. inglobandole in /* ... */ e per limitare il numero righe impostare valori appropriati in : LIMIT 15 OFFSET 0
Ti saluto , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Grazie Sergio, funziona. Ho il dubbio, però, che possano essere inclusi i pazienti in libera professione, poiché tra il conteggio che mi fa MilleUtilità (1107) e quello che mi fa la query (1111) di pazienti totali c'è una piccola differenza.
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
La differenza è dovuta ai revocati nell'ultimo anno inclusi con la clausola " Or ( n.pa_drevoca Between Date( Today())-365 And Today() ".drtulino ha scritto:Grazie Sergio, funziona. Ho il dubbio, però, che possano essere inclusi i pazienti in libera professione, poiché tra il conteggio che mi fa MilleUtilità (1107) e quello che mi fa la query (1111) di pazienti totali c'è una piccola differenza.
Prova:
SELECT InitCap( u.nome) As mmg , u.userid AS m_id , u.codice_regionale AS ssr_code ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 < 5)
_ass_under_5_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 5 And 14.99 )
_ass_5_14_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 15 And 24.99 )
_ass_15_24_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 25 And 44.99 )
_ass_25_44_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 Between 45 And 64.99 )
_ass_45_64_ ,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null And Days( p.nascita , '2018-01-01')*24/8766 > 64.99 )
_ass_over_64_,
( Select Count( Distinct p.codice) From ( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Where u.userid = n.pa_medi And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() And motivo_revoca = 'S') And p.decesso Is Null )
_ass_0_100_
FROM v_utenti u GROUP BY u.nome , u.userid , u.codice_regionale
ORDER BY 1 LIMIT 15 OFFSET 0
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Giuseppe, la differenza si accorcia (1107 di MilleUtilità vs 1106 della tua query).
Grazie
P.S.: Hai aggiornamenti per il sito xoom.it?
Grazie
P.S.: Hai aggiornamenti per il sito xoom.it?
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Oggi il servizio xoom.it dovrebbe tornare attivo, ho chiesto notizie ma ancora non ho rispostedrtulino ha scritto:Giuseppe, la differenza si accorcia (1107 di MilleUtilità vs 1106 della tua query).
Grazie
P.S.: Hai aggiornamenti per il sito xoom.it?
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Per mia curiosità ,provate anche questa (che in passato con PostGres non funzionava, credo a causa degli IF, ma che stamane funzionava. mistero)doctoraterni ha scritto:Buonasera.Dovrei inviare a Influnet il numero degli assistiti divisi per gruppi di età: 00-04 aa, 05-14 aa, 15-24 aa, 25-44 aa, 45-64 aa, 65 aa e oltre.Come effettuare la estrazione? Lavoro con PostgresGrazie in ogni casoDoctoraterni
SELECT
IF ((today()-datanasc)/365) BETWEEN '0' AND '4' THEN '1: 0-4 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '5' AND '14' THEN '2: 5-14 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '15' AND '24' THEN '3:15-24 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '25' AND '44' THEN '4:25-44 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '45' AND '64' THEN '5: 45-64 anni'
ELSE IF ((today()-datanasc)/365) >='65' THEN '6: Oltre65anni'
ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF as "Fascia_Eta",
count(*) as Totale
FROM V_Pazienti
group by 1
order by 1
draleo83- Membro Junior
- Messaggi : 225
Punti : 5307
Voti per importanza dei messaggi : 25
Data d'iscrizione : 21.02.11
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Funziona !!!draleo83 ha scritto:Per mia curiosità ,provate anche questa (che in passato con PostGres non funzionava, credo a causa degli IF, ma che stamane funzionava. mistero)doctoraterni ha scritto:Buonasera.Dovrei inviare a Influnet il numero degli assistiti divisi per gruppi di età: 00-04 aa, 05-14 aa, 15-24 aa, 25-44 aa, 45-64 aa, 65 aa e oltre.Come effettuare la estrazione? Lavoro con PostgresGrazie in ogni casoDoctoraterni
SELECT
IF ((today()-datanasc)/365) BETWEEN '0' AND '4' THEN '1: 0-4 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '5' AND '14' THEN '2: 5-14 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '15' AND '24' THEN '3:15-24 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '25' AND '44' THEN '4:25-44 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '45' AND '64' THEN '5: 45-64 anni'
ELSE IF ((today()-datanasc)/365) >='65' THEN '6: Oltre65anni'
ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF as "Fascia_Eta",
count(*) as Totale
FROM V_Pazienti
group by 1
order by 1
Re: Come estrarre numero assistiti per gruppi di età (Postgres)
Funziona anche utilizzando gli alias delle colonne; infatti sostituendo Group By 1 con Group by "Fascia_Eta", tutto funziona regolarmente . Evidentemente hanno aggiornato la versione di Post Gres. Meglio così. Parecchia fatica in meno !Admin ha scritto:Funziona !!!draleo83 ha scritto:Per mia curiosità ,provate anche questa (che in passato con PostGres non funzionava, credo a causa degli IF, ma che stamane funzionava. mistero)doctoraterni ha scritto:Buonasera.Dovrei inviare a Influnet il numero degli assistiti divisi per gruppi di età: 00-04 aa, 05-14 aa, 15-24 aa, 25-44 aa, 45-64 aa, 65 aa e oltre.Come effettuare la estrazione? Lavoro con PostgresGrazie in ogni casoDoctoraterni
SELECT
IF ((today()-datanasc)/365) BETWEEN '0' AND '4' THEN '1: 0-4 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '5' AND '14' THEN '2: 5-14 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '15' AND '24' THEN '3:15-24 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '25' AND '44' THEN '4:25-44 anni'
ELSE IF ((today()-datanasc)/365) BETWEEN '45' AND '64' THEN '5: 45-64 anni'
ELSE IF ((today()-datanasc)/365) >='65' THEN '6: Oltre65anni'
ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF as "Fascia_Eta",
count(*) as Totale
FROM V_Pazienti
group by 1
order by 1
draleo83- Membro Junior
- Messaggi : 225
Punti : 5307
Voti per importanza dei messaggi : 25
Data d'iscrizione : 21.02.11
Argomenti simili
» salvataggio gruppi di accertamenti
» email assistiti
» Dati completi dei pazienti
» Come estrarre VACCINAZIONI ANTINFLUENZALI
» query per estrarre varie vaccinazioni
» email assistiti
» Dati completi dei pazienti
» Come estrarre VACCINAZIONI ANTINFLUENZALI
» query per estrarre varie vaccinazioni
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.