obtener cantidad de datos sin repetirlos
Publicado por sofia (3 intervenciones) el 23/10/2020 16:09:26
Hola buenos días,
Tengo una consulta donde necesito obtener la cantidad de personas, cantidad de total de consulta, cantidad de consulta x tipo, cantidad de persona por enfermedad, y cantidad de persona sin una enfermedad seleccionada
el problema es que no me esta devolviendo bien los valores, no se que puedo estar haciendo mal.
cantidad total de consulta seria 10 y me devuelve 13
cantidad total de persona que hicieron consulta seria 9 y me devuelve 13
cantidad de persona por enfermedad agrupada por id en el caso del id 1 seria 7 y me devuelve 8, en el idpersona 9949 se repite el mismo idenfermedad 1
Adjunto estructura y consulta.
No se si estoy encarando bien la consulta o no.
Tengo una consulta donde necesito obtener la cantidad de personas, cantidad de total de consulta, cantidad de consulta x tipo, cantidad de persona por enfermedad, y cantidad de persona sin una enfermedad seleccionada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
select
p.idpersona
,ed.fecha_atencion
,e.idtipoconsulta
,e.idenfermedad
,ed.idconsultas
,count(distinct(ed.idconsultas)) as cant_total_cosulta
,(select count(distinct(idpersona)) as cant_persona_periodo
from consultas as ede
where ed.idconsultas = ede.idconsultas) as cant_persona_periodo
,(select count(distinct(ev.idenfermedad)) as cant_enfermedad
from consultas as ede
join detalle_consultas as ev using(idconsultas)
where ed.idconsultas = ede.idconsultas) as cant_enfermedad
,(select count(distinct(ev.idtipoconsulta)) as cant_consulta
from consultas as ede
join detalle_consultas as ev using(idconsultas)
where ed.idconsultas = ede.idconsultas) as cant_consulta
,(select count(distinct(ede.idpersona)) as cant_persona_sin_enfermedad
from consultas as ede
join detalle_consultas as ev using(idconsultas)
where ed.idconsultas = ede.idconsultas
and e.idenfermedad != ev.idenfermedad) as cant_persona_sin_enfermedad
from personas as p
inner join consultas as ed
on ed.idpersona = p.idpersona
inner join detalle_consultas as e
on ed.idconsultas = e.idconsultas
where
p.fecha_nacimiento is not null
and EXTRACT(YEAR FROM ed.fecha_atencion) >= (EXTRACT(YEAR FROM current_timestamp) -10)
group by
p.idpersona
,ed.fecha_atencion
,e.idtipoconsulta
,e.idenfermedad
,ed.idconsultas
order by fecha_atencion desc
el problema es que no me esta devolviendo bien los valores, no se que puedo estar haciendo mal.
cantidad total de consulta seria 10 y me devuelve 13
cantidad total de persona que hicieron consulta seria 9 y me devuelve 13
cantidad de persona por enfermedad agrupada por id en el caso del id 1 seria 7 y me devuelve 8, en el idpersona 9949 se repite el mismo idenfermedad 1
Adjunto estructura y consulta.
No se si estoy encarando bien la consulta o no.
- archivo.zip(106,3 KB)
Valora esta pregunta
0