Percentual sql server

19/02/2015

0

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


[img:descricao=Resultado da consulta]http://arquivo.devmedia.com.br/forum/imagem/412630-20150219-130821.jpg[/img]

poderiam por favor me ajudar
Claudio Marcelino

Claudio Marcelino

Responder

Posts

19/02/2015

Isaac Jose

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


percent = select count(sistemas) VIEW_INC_FECHADOS_MES/qtd_incidentes
Responder

19/02/2015

Isaac Jose

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
Responder

19/02/2015

Claudio Lopes

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

19/02/2015

Claudio Marcelino

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

19/02/2015

Claudio Marcelino

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

19/02/2015

Isaac Jose

cria um campo para receber esse valor
Responder

19/02/2015

Claudio Marcelino

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



[img:descricao=com campo perc]http://arquivo.devmedia.com.br/forum/imagem/412630-20150219-161131.jpg[/img]
Responder

19/02/2015

Renato Rubinho

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.

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
Responder

19/02/2015

Marcos P

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 ).

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...
Responder

20/02/2015

Claudio Marcelino

Pessoal,

muito obrigado a todos pela a ajuda.

Marcos P deu certo...

abs
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar