Percentual em codigo
select Periodo_Inicio ,Periodo_FIM, count(cd_aviso_cirurgia) as quantidade from ( select distinct pac.cd_paciente,avi.cd_aviso_cirurgia, ate.cd_atendimento,pac.nm_paciente, sa.cd_sal_cir, sa.ds_sal_cir, ce.cd_cen_cir, ce.ds_cen_cir,
TO_CHAR(avi.dt_inicio_cirurgia,'HH24:MI:SS') Inicio,
Case When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 6
Then 'Noite1' */
End Periodo_Inicio,
TO_CHAR(avi.dt_fim_cirurgia,'HH24:MI:SS') FIM,
Case When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 6
Then 'Noite' */
End Periodo_FIM
from dbamv.cen_cir ce
inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir
inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir
inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia
inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente
inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento
inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente
where avi.dt_inicio_cirurgia between '01/08/2020' and '31/08/2020' )
group by Periodo_Inicio,Periodo_FIM
como representar em forma percentual os periodos
TO_CHAR(avi.dt_inicio_cirurgia,'HH24:MI:SS') Inicio,
Case When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 6
Then 'Noite1' */
End Periodo_Inicio,
TO_CHAR(avi.dt_fim_cirurgia,'HH24:MI:SS') FIM,
Case When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 6
Then 'Noite' */
End Periodo_FIM
from dbamv.cen_cir ce
inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir
inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir
inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia
inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente
inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento
inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente
where avi.dt_inicio_cirurgia between '01/08/2020' and '31/08/2020' )
group by Periodo_Inicio,Periodo_FIM
como representar em forma percentual os periodos
Diogo Santos
Curtidas 0
Respostas
Emerson Nascimento
02/09/2020
veja se isso funciona:
select Periodo_Inicio, Periodo_FIM, count(cd_aviso_cirurgia) as quantidade, ( count(cd_aviso_cirurgia) / (sum(count(cd_aviso_cirurgia)) over()) ) * 100 partic from ( select pac.cd_paciente, avi.cd_aviso_cirurgia, ate.cd_atendimento, pac.nm_paciente, sa.cd_sal_cir, sa.ds_sal_cir, ce.cd_cen_cir, ce.ds_cen_cir, TO_CHAR(avi.dt_inicio_cirurgia,'HH24:MI:SS') Inicio, Case When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24')) Between 00 And 19 Then 'Dia' When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24')) Between 19 And 23 Then 'Noite' /* When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24')) Between 00 And 06 Then 'Noite1' */ End Periodo_Inicio, TO_CHAR(avi.dt_fim_cirurgia,'HH24:MI:SS') FIM, Case When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24')) Between 00 And 19 Then 'Dia' When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24')) Between 19 And 23 Then 'Noite' /* When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24')) Between 00 And 06 Then 'Noite' */ End Periodo_FIM from dbamv.cen_cir ce inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente where avi.dt_inicio_cirurgia between '01/08/2020' and '31/08/2020' ) group by Periodo_Inicio, Periodo_FIM
GOSTEI 0
Diogo Santos
02/09/2020
veja se isso funciona:
select Periodo_Inicio, Periodo_FIM, count(cd_aviso_cirurgia) as quantidade, ( count(cd_aviso_cirurgia) / (sum(count(cd_aviso_cirurgia)) over()) ) * 100 partic from ( select pac.cd_paciente, avi.cd_aviso_cirurgia, ate.cd_atendimento, pac.nm_paciente, sa.cd_sal_cir, sa.ds_sal_cir, ce.cd_cen_cir, ce.ds_cen_cir, TO_CHAR(avi.dt_inicio_cirurgia,''HH24:MI:SS'') Inicio, Case When To_Number(To_Char(avi.dt_inicio_cirurgia,''hh24'')) Between 00 And 19 Then ''Dia'' When To_Number(To_Char(avi.dt_inicio_cirurgia,''hh24'')) Between 19 And 23 Then ''Noite'' /* When To_Number(To_Char(avi.dt_inicio_cirurgia,''hh24'')) Between 00 And 06 Then ''Noite1'' */ End Periodo_Inicio, TO_CHAR(avi.dt_fim_cirurgia,''HH24:MI:SS'') FIM, Case When To_Number(To_Char(avi.dt_fim_cirurgia,''hh24'')) Between 00 And 19 Then ''Dia'' When To_Number(To_Char(avi.dt_fim_cirurgia,''hh24'')) Between 19 And 23 Then ''Noite'' /* When To_Number(To_Char(avi.dt_fim_cirurgia,''hh24'')) Between 00 And 06 Then ''Noite'' */ End Periodo_FIM from dbamv.cen_cir ce inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente where avi.dt_inicio_cirurgia between ''01/08/2020'' and ''31/08/2020'' ) group by Periodo_Inicio, Periodo_FIM
ainda nao deu esta calculando errado ele aumento o numero de cirurgias
GOSTEI 0
Emerson Nascimento
02/09/2020
e query é a mesma que você apresentou.
a única exceção é a linha
então não pode ter alterado qualquer conteúdo.
a única exceção é a linha
( count(cd_aviso_cirurgia) / (sum(count(cd_aviso_cirurgia)) over()) ) * 100 partic
GOSTEI 0
Diogo Santos
02/09/2020
CONSEGUI USANDO UMA FUNÇÃO NATIVA DO ORACLE
select Periodo_Inicio ,Periodo_FIM,ROUND(RATIO_TO_REPORT(COUNT(*)) OVER()*100, 2) Percentual , count(cd_aviso_cirurgia) as quantidade from ( select distinct pac.cd_paciente,avi.cd_aviso_cirurgia, ate.cd_atendimento,pac.nm_paciente, sa.cd_sal_cir, sa.ds_sal_cir, ce.cd_cen_cir, ce.ds_cen_cir,
TO_CHAR(avi.dt_inicio_cirurgia,'HH24:MI:SS') Inicio,
Case When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 6
Then 'Noite1' */
End Periodo_Inicio,
TO_CHAR(avi.dt_fim_cirurgia,'HH24:MI:SS') FIM,
Case When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 6
Then 'Noite' */
End Periodo_FIM
from dbamv.cen_cir ce
inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir
inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir
inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia
inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente
inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento
inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente
where avi.dt_inicio_cirurgia between '01/08/2020' and '31/08/2020' )
group by Periodo_Inicio,Periodo_FIM
RATIO_TO_REPORT
select Periodo_Inicio ,Periodo_FIM,ROUND(RATIO_TO_REPORT(COUNT(*)) OVER()*100, 2) Percentual , count(cd_aviso_cirurgia) as quantidade from ( select distinct pac.cd_paciente,avi.cd_aviso_cirurgia, ate.cd_atendimento,pac.nm_paciente, sa.cd_sal_cir, sa.ds_sal_cir, ce.cd_cen_cir, ce.ds_cen_cir,
TO_CHAR(avi.dt_inicio_cirurgia,'HH24:MI:SS') Inicio,
Case When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_inicio_cirurgia,'hh24'))Between 0 And 6
Then 'Noite1' */
End Periodo_Inicio,
TO_CHAR(avi.dt_fim_cirurgia,'HH24:MI:SS') FIM,
Case When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 19
Then 'Dia'
When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 19 And 23
Then 'Noite'
/* When To_Number(To_Char(avi.dt_fim_cirurgia,'hh24'))Between 0 And 6
Then 'Noite' */
End Periodo_FIM
from dbamv.cen_cir ce
inner join dbamv.sal_cir sa on ce.cd_cen_cir = sa.cd_cen_cir
inner join dbamv.aviso_cirurgia avi on sa.cd_sal_cir = avi.cd_sal_cir
inner join dbamv.cirurgia_aviso ci on avi.cd_aviso_cirurgia = ci.cd_aviso_cirurgia
inner join dbamv.paciente pac on pac.cd_paciente = avi.cd_paciente
inner join dbamv.atendime ate on avi.cd_atendimento = ate.cd_atendimento
inner join dbamv.atendime ate on ate.cd_paciente = pac.cd_paciente
where avi.dt_inicio_cirurgia between '01/08/2020' and '31/08/2020' )
group by Periodo_Inicio,Periodo_FIM
RATIO_TO_REPORT
GOSTEI 0