Caros amigos, quem nunca teve problema para fazer relatorio com porcentagem fazendo um SQL só e sem trabalhar no ASP.
Ai vai: Vamos pensar aqui um pouco!!!
o SQL tem como gerar tabela temporario no select então vejamos... Se eu fizer dois SQLs em um só? Não consigo trazer o total geral e um total por seguimento ? Sim eu consigo... então vamos fazer isso separadamente.
Vamos usar por exemplo um concurso:
--selecionando o total geral de candidatos inscritos:
SELECT count(*) As TotalGeral from tabCandidato
resultado:
TotalGeral
-----------
103
--selecionando o total por faculdade
SELECT Count(tC.IDTFACULDADE) as numFacul,
tF.nomInstituicao, tF.sigUF
FROM tabCandidato tC, tabFaculdade tF
WHERE tC.idtFaculdade = tF.IdtFaculdade
GROUP BY tC.IDTFACULDADE, nomInstituicao, sigUF
Resultado:
numFacul nomInstituicao sigUF
40 CENTRO UNIVERSITÁRIO DE BRASÍLIA - DF
22 INSTITUTO DE CIÊNCIAS SOCIAIS - DF
15 UNIVERSIDADE CATÓLICA DE BRASILIA - DF
--se juntarmos os dois vamos ter ?
SELECT
TotalGeral,
numFacul,
nomInstituicao,
sigUF,
((100*numFacul)/TotalGeral) porcentagem
FROM
( SELECT Count(tC.IDTFACULDADE) as numFacul,
tF.nomInstituicao, tF.sigUF
FROM tabCandidato tC, tabFaculdade tF
WHERE tC.idtFaculdade = tF.IdtFaculdade
GROUP BY tC.IDTFACULDADE, nomInstituicao, sigUF ) tabRel,
( SELECT count(*) As TotalGeral from tabCandidato) tabTotalGeral
ORDER BY Porcentagem
Usando a regra de 3, vamos que o totalGeral é 100% o numFacul é o numero de pessoas por facul, então temos que (100*numFacul)/totalGeral = porcentagem (Pronto)!
Bem, qualquer coisa, só falar!!!
[]'s
0 comentários:
Postar um comentário