PostgreSQL - obtener cantidad de datos sin repetirlos

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado 1 puesto en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

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

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder