Array
(
)

Percentual sql server

Claudio Marcelino
   - 19 fev 2015

Boa tarde, possuo a consulta abaixo na qual preciso mostrar o percentual de cada sistema a regra seria o total do campo de quantidade_incidentes dividido por cada quantidade de sistmas
select distinct
[STATUS],
product_categorization_tier_3 as SISTEMAS,
count (resolution_category ) as QTD_INCIDENTES
from
VIEW_INC_FECHADOS_MES
where [nivel de atendimento] = 'n1'
and [nivel de atendimento2] = 'n1'
and assigned_support_company_1 = 'Capgemini'
and assigned_support_company_2 = 'Capgemini'
and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
and [status] = 'CLOSED'
and resolution_category = 'sistemas'
group by [status],
product_categorization_tier_3,
resolution_category
imagem

Resultado da consulta (Clique na imagem para abrir em uma nova janela)
poderiam por favor me ajudar

Isaac Jose
   - 19 fev 2015

crie um campo com a comparação que deseja contando a quantidade de sistemas

percent = select count(sistemas) VIEW_INC_FECHADOS_MES/qtd_incidentes

Isaac Jose
   - 19 fev 2015

amigo nao tinha visto o seu quadro direito desculpa... acho que a conta que vc esta querendo fazer e a seguinte

100/294*quantidade_incidentes
ou seja
100/sum(quantidade_incidentes)
* quantidade_incidentes daquele sistema

ex 10/294*128 = 43,537 e assim por diante

Din
|
MVP
Pontos: 45
    19 fev 2015

Não esqueça de converter o resultado em float, caso nenhum dos produtos da conta estejam nesse formato

Claudio Marcelino
   - 19 fev 2015

opa Isaac,
não entendi muito bem onde posso inserir o calculo " 100/sum(quantidade_incidentes)
* quantidade_incidentes daquele sistema"
na minha consulta.

Claudio Marcelino
   - 19 fev 2015

opa Isaac,
não entendi muito bem onde posso inserir o calculo " 100/sum(quantidade_incidentes)
* quantidade_incidentes daquele sistema"
na minha consulta.

Isaac Jose
   - 19 fev 2015

cria um campo para receber esse valor

Claudio Marcelino
   - 19 fev 2015

eu fiz da forma abaixo porem o campo de porcentagem esta vindo vazio

select distinct

[STATUS],
product_categorization_tier_3 as SISTEMAS,
count (resolution_category ) as QTD_INCIDENTES,
(count(*)/count(resolution_category ))/100 as Perc
from
VIEW_INC_FECHADOS_MES
where (1=1)
and [nivel de atendimento] = 'n1'
and [nivel de atendimento2] = 'n1'
and assigned_support_company_1 = 'Capgemini'
and assigned_support_company_2 = 'Capgemini'
and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
and [status] = 'CLOSED'
and resolution_category = 'sistemas'

group by [status],
product_categorization_tier_3,
resolution_category

com campo perc (Clique na imagem para abrir em uma nova janela)

Rrubinho
   - 19 fev 2015

Buenas,

Dependendo do volume de dados da sua tabela isso pode ficar pesado, mas segue uma sugestão pesquisando para cada registro o total de registros gerado na consulta.

#Código

select distinct
[STATUS],
product_categorization_tier_3 as SISTEMAS,
count(resolution_category) as QTD_INCIDENTES,

// CAMPO PERCENTUAL INICIO
   count(resolution_category) * 100 / 
   (
   SELECT COUNT(1)
   from 
   VIEW_INC_FECHADOS_MES
   where [nivel de atendimento] = 'n1'
   and [nivel de atendimento2] = 'n1'
   and assigned_support_company_1 = 'Capgemini'
   and assigned_support_company_2 = 'Capgemini'
   and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
   and [status] = 'CLOSED'
   and resolution_category = 'sistemas'
   group by [status],
   product_categorization_tier_3,
   resolution_category
   ) PERC
// CAMPO PERCENTUAL FIM

from 
VIEW_INC_FECHADOS_MES
where [nivel de atendimento] = 'n1'
and [nivel de atendimento2] = 'n1'
and assigned_support_company_1 = 'Capgemini'
and assigned_support_company_2 = 'Capgemini'
and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
and [status] = 'CLOSED'
and resolution_category = 'sistemas'
group by [status],
product_categorization_tier_3,
resolution_category

Marcos P
   - 19 fev 2015

Crie uma variável local que, rodando exatamente do mesmo set de dados ( FROM ) e sob as mesmas condições ( WHERE ), armazene o total geral que você precisa...

Depois divida direto essa variável local quando for fazer o detalhamento dos itens ( GROUP BY ).

#Código

Declare @TOTAL Float
Set @TOTAL = (select count(resolution_category) 
              from VIEW_INC_FECHADOS_MES
              where [nivel de atendimento] = 'n1'
              and [nivel de atendimento2] = 'n1'
              and assigned_support_company_1 = 'Capgemini'
              and assigned_support_company_2 = 'Capgemini'
              and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
              and [status] = 'CLOSED'
              and resolution_category = 'sistemas')

select distinct
[STATUS],
product_categorization_tier_3 as SISTEMAS,
count (resolution_category ) as QTD_INCIDENTES,
convert(float, (count (resolution_category ) / @TOTAL)*100) as PERC
from
VIEW_INC_FECHADOS_MES
where [nivel de atendimento] = 'n1'
and [nivel de atendimento2] = 'n1'
and assigned_support_company_1 = 'Capgemini'
and assigned_support_company_2 = 'Capgemini'
and assigned_sup_organization_2 = 'Gestão de Serviços de TI'
and [status] = 'CLOSED'
and resolution_category = 'sistemas'
group by [status],
product_categorization_tier_3,
resolution_category


São duas queries, mas o resultado será processado mais rápido que tentar totalizar individualmente na query principal.

Espero ter ajudado...

Claudio Marcelino
   - 20 fev 2015

Pessoal,

muito obrigado a todos pela a ajuda.

Marcos P deu certo...

abs