Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1228
Assunto : SQL Server
Titulo: Utilizando case e SUM

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A associação criativa de recursos do SQL permite alguns resultados bem interessantes. O uso da função de agregação SUM e da instrução CASE é um exemplo disso.

Com o case podemos testar critérios em nossos registros e ter um 0/1 conforme os registros atendam ou não a um determinado critério. Com o SUM podemos contar a quantidade de 1's na coluna (0's não afetarão o resultado do SUM) portanto com a combinação dos dois podemos obter um total de quantos registros atendem e quantos não atendem a um determinado critério.

Observem que usando simplesmente o where chegamos a apenas um dos valores, não os dois na mesma query. Utilizando o group by com um count chegamos aos dois valores, mas separados em duas linhas ao invés de uma só. Funções de janela poderiam chegar ao mesmo resultado.

Primeiro examplo: Total de produtos ativos e descontinuados em cada categoria

select categoryname,sum(case discontinued
when 1 then 1
else 0
end) discontinuados,
sum(case discontinued
when 0 then 1
else 0
end) ativos
from products p, categories c where
p.categoryid=c.categoryid
group by categoryname

O discontinued já é do tipo bit, então o uso do case fica bem simples.

Segundo exemplo: Total de produtos acima do estoque minimo e abaixo do estoque minimo divididos por categoria

select categoryname, sum(case
when unitsinstock>=reorderlevel then 1
else 0
end) acimaEstoque,
sum(case
when unitsinstock<reorderlevel then 1
else 0
end) abaixoEstoque
from products p, categories c where
p.categoryid=c.categoryid
group by categoryname

Vemos um pouco mais da versatilidade do case neste exemplo


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br