Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jony Peterson

[Resolvido] Média excluindo dados zerados

Recommended Posts

Pessoal bom dia

 

estou executando a seguinte consulta e obtendo o resultado:

 

SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',

(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01)
else 0 
end) USINAS_BAIXA, 

(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0 
end)  USINA_ALTA

FROM TC0200

WHERE  C_DATA >= '2012/03/5' and 
   C_DATA <= '2012/03/5' AND 
   (
   C_ENSAIO = 'H2OALM' 
   )

 

DIA=========H20========USINAS_BAIXA==USINA_ALTA
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.73======0==============29.73
2012-03-05==28.48======0==============28.48
2012-03-05==28.31======0==============28.31
2012-03-05==29.56======0==============29.56
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0
2012-03-05==29.68======29.68==========0
2012-03-05==29.16======29.16==========0
2012-03-05==28.06======28.06==========0
2012-03-05==29.27======29.27==========0

 

Eu estou querendo fazer uma média entre dos valores das usinas baixas e da usina alta, retirando os valores de zero que está impactando no valor da média.

 

Eu já fiz um case que aprendi aqui mas ainda o zero impacta.

 

Pois irei criar uma soma da (USINA ALTA + USINA BAIXA) / 2 -- MÉDIA SIMPLES

 

Do mais pessoal grato desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi

 

SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',

(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) USINAS_BAIXA, 

(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end)  USINA_ALTA

FROM TC0200

WHERE  C_DATA >= '2012/03/5' and 
          C_DATA <= '2012/03/5' AND 
          (
          C_ENSAIO = 'H2OALM' 
          )

and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) <> 0
and
(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end) <> 0
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi

 

SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',

(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) USINAS_BAIXA, 

(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end)  USINA_ALTA

FROM TC0200

WHERE  C_DATA >= '2012/03/5' and 
          C_DATA <= '2012/03/5' AND 
          (
          C_ENSAIO = 'H2OALM' 
          )

and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) <> 0
and
(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end) <> 0
)

 

 

Motta boa tarde

 

É realmente o que você entende, no código que você me passou não funcionou para as duas usinas, mas quando deixo uma só ele realmente retira todos os zeros, como ficaria para as duas?

Tem como separar um bloco para uma usina e outro bloco para outra usina?

Segue a consulta (campos comentados) alterada para apenas uma usina:

 

SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
then (C_VAL_01) 
else 0
end ) USINAS_BAIXA
,          
(case when C_ENTIDADE = 'ULESTE'
then (C_VAL_01)
else 0
end)  USINA_ALTA
FROM TC0200
WHERE  C_DATA >= '2012/03/5' and 
      C_DATA <= '2012/03/5' AND
      (
      C_ENSAIO = 'H2OALM' 
      )
       and
--        (
     (case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0
       end) <> 0
--                AND
--       (case when C_ENTIDADE = 'ULESTE'
--      then (C_VAL_01)
--       else 0
--       end) <> 0
--       )

 

DIA	H20	USINAS_BAIXA	USINA_ALTA
2012-03-05 29.68	29.68	0
2012-03-05 29.16	29.16	0
2012-03-05 28.06	28.06	0
2012-03-05 29.27	29.27	0
2012-03-05 29.68	29.68	0
2012-03-05 29.16	29.16	0
2012-03-05 28.06	28.06	0
2012-03-05 29.27	29.27	0
2012-03-05 29.68	29.68	0
2012-03-05 29.16	29.16	0
2012-03-05 28.06	28.06	0
2012-03-05 29.27	29.27	0

 

Grato desde já pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente

 

 

SELECT C_DATA AS 'DIA', (C_VAL_01) AS 'H20',

(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) USINAS_BAIXA, 

(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end)  USINA_ALTA

FROM TC0200

WHERE  C_DATA >= '2012/03/5' and 
          C_DATA <= '2012/03/5' AND 
          (
          C_ENSAIO = 'H2OALM' 
          )

and
(
(case when C_ENTIDADE = 'UCENTRAL' or C_ENTIDADE = 'UNORTE' or C_ENTIDADE = 'USUL'
       then (C_VAL_01)
       else 0 
       end) <> 0
or -- estava and
(case when C_ENTIDADE = 'ULESTE'
       then (C_VAL_01)
       else 0 
       end) <> 0
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta boa tarde

 

O resultado foi o mesmo do primeiro select:

 

DIA=========H20========USINAS_BAIXA==USINA_ALTA

2012-03-05==29.68======29.68==========0

2012-03-05==29.16======29.16==========0

2012-03-05==28.06======28.06==========0

2012-03-05==29.27======29.27==========0

2012-03-05==29.73======0==============29.73

2012-03-05==28.48======0==============28.48

2012-03-05==28.31======0==============28.31

2012-03-05==29.56======0==============29.56

2012-03-05==29.68======29.68==========0

2012-03-05==29.16======29.16==========0

2012-03-05==28.06======28.06==========0

2012-03-05==29.27======29.27==========0

2012-03-05==29.68======29.68==========0

2012-03-05==29.16======29.16==========0

2012-03-05==28.06======28.06==========0

2012-03-05==29.27======29.27==========0

 

Certa vez eu vi uma consulta que separava um resultado num bloco por exemplo T1# e ou resultado em T2#, e no final os dois se união, eu não sei ainda fazer desta forma será que não seria uma solução?

 

Do mais grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Síntaxe básica do union

 

select campo1,campo2,campo3
from tabela
where campo4 = 1
union all
select campo1,campo2,campo3
from tabela
where campo4 = 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Síntaxe básica do union

 

select campo1,campo2,campo3
from tabela
where campo4 = 1
union all
select campo1,campo2,campo3
from tabela
where campo4 = 2

 

 

Motta com o Union funcionou.

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.