Calculo de Média da Coluna

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
vonzodas
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Qua, 20 Jun 2012 9:00 am

Bom dia

Estou tentando criar um relatório onde tem que aparecer uma linha com a média das colunas logo abaixo do resultado:

mês INCIDENCIAS PAC_DIA TAXA
08/2013 26 1850 1,41
09/2013 13 1702 0,76
10/2013 15 1658 0,9

/*Media 18 1736 1,02 */

É possível trazer a média de cada coluna logo após o resultado do SELECT? (Não sei se deu para entender, mas já tentei usar AVG e acaba alterando o resultado por causa do group by)

Abaixo segue a query (que ta bem bagunçada eu sei)

Selecionar tudo

SELECT  inc.mês									mês
	   ,inc.registro							INCIDENCIAS 
	   ,pdia.PAC_DIA							PAC_DIA
	   ,Round(((inc.registro/nullif(pdia.PAC_DIA,0))*100),2)	TAXA
	   
	   --,#dataInicial#
	   --,#dataFinal#

FROM

(
SELECT 	mês
	   ,count(registro)	registro

FROM
(

select  TO_CHAR(to_date(dt_registro, 'DD/MM/RRRR'),'MM/RRRR') mês
	   ,count(rd.cd_registro_documento) registro
	   
from dbamv.registro_documento rd,
     dbamv.atendime a,
     dbamv.paciente p,
     dbamv.convenio c
     
where rd.cd_atendimento = a.cd_atendimento
AND   a.cd_paciente    = p.cd_paciente
AND   a.cd_convenio    = c.cd_convenio
AND   rd.cd_documento   = 40
and   rd.sn_impresso    = 'S'
AND   to_date(dt_registro, 'DD/MM/RRRR') BETWEEN '01/04/2013' AND '31/10/2013' -- #dataInicial# AND #dataFinal# -- 

GROUP BY  dt_registro
order by  rd.dt_registro
)

GROUP BY mês
order by to_date(mês, 'MM/RRRR')
) INC


-------------------------------------------------
,(
SELECT 	mês
	   ,count(pac_dia) pac_dia	

FROM
(

SELECT 	 count(atend) pac_dia
		,TO_CHAR(to_date(dt_registro, 'DD/MM/RRRR'),'MM/RRRR') mês

FROM  dbamv.atendime a,
      dbamv.paciente p,
      dbamv.convenio c,      
(select DISTINCT rd.cd_registro_documento 
		,rd.cd_atendimento atend
		,rd.DT_REGISTRO dt_registro
    from dbamv.registro_resposta rr
         ,dbamv.registro_documento rd
where cd_pergunta_doc in (1233, 1236, 1238, 3065, 3067, 3069, 8476, 8477, 8478)
and rd.cd_registro_documento = rr.cd_registro_documento
and rr.ds_resposta is not NULL
AND rd.dt_registro BETWEEN '01/04/2013' AND '31/10/2013' --  #dataInicial# AND #dataFinal# -- 
ORDER BY rd.cd_atendimento)

WHERE atend = a.cd_atendimento
AND   a.cd_paciente = p.cd_paciente
AND   a.cd_convenio = c.cd_convenio

GROUP BY  dt_registro
--ORDER BY atend,dt_registro

)

GROUP BY mês
order by to_date(mês, 'MM/RRRR')

)PDIA

WHERE pdia.mês = inc.mês



Avatar do usuário
gpereira
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 61
Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate

Amigo,

Descrição esta meio confusa .

Tudo que você quer é atribuir uma coluna de média para tabela descrita?

Não testei com AVG, veja se query abaixo resolve teu problema.

Selecionar tudo


SELECT TOCHAR(mês) AS mês, INCIDENCIAS, PAC_DIA, TAXA
UNION
SELECT 'Media'
		, (INCIDENCIAS / COUNT(1) ) 
		, (PAC_DIA 	   / COUNT(1) ) 
		, (TAXA 	   / COUNT(1) ) 
		

{}'s
Avatar do usuário
gpereira
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 61
Registrado em: Sáb, 10 Dez 2011 10:56 am
Gustavo Antonio Pereira
OCA Oracle Database 10g Administrator Certified Associate

Corrigindo...

Query atribui linha com media .
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 25 visitantes