Critérios de seleção em SQL II
Continuamos com o group by, avg, sum e com o compute de sql-server.Por Claudio
Publicado em: 17/10/07
Combine os registros com valores idênticos, na lista de campos especificados, em um único registro. Para cada registro se cria um valor sumário se se inclui uma função SQL agregada, como por exemplo, Sum ou Count, na instrução SELECT. Sua sintaxe é:
SELECT campos FROM tabela WHERE criterio GROUP BY campos do grupo
GROUP BY é opcional. Os valores de resumo se omitem se não existe uma função SQL agregada na instrução SELECT. Os valores Null nos campos GROUP BY se agrupam e não se omitem. Não obstante, os valores Null não se avaliam em nenhuma das funções SQL agregadas.
Utiliza-se a cláusula WHERE para excluir aquelas filas que não deseja agrupar, e a cláusula HAVING para filtrar os registros uma vez agrupados.
Ao menos que contenha um dado Memo ou Objeto OLE, um campo da lista de campos GROUP BY pode se referir a qualquer campo das tabelas que aparecem na cláusula FROM, inclusive se o campo não estiver incluído na instrução SELECT, sempre e quando a instrução SELECT incluir pelo menos uma função SQL agregada.
Todos os campos da lista de campos de SELECT devem ou se incluir na cláusula GROUP BY, ou como argumentos de uma função SQL agregada.
SELECT
IdFamilia, Sum(Stock) AS StockAtual
FROM
Produtos
GROUP BY
IdFamilia
Uma vez que GROUP BY combinou os registros, HAVING mostra qualquer registro agrupado pela cláusula GROUP BY que satisfaça as condições da cláusula HAVING.
HAVING é similar a WHERE, determina que registros se selecionam. Uma vez que os registros se agruparam utilizando GROUP BY, HAVING determina quais deles serão mostrados.
SELECT
IdFamilia, Sum(Stock) AS StockAtual
FROM
Produtos
GROUP BY
IdFamilia
HAVING
StockAtual > 100
AND
NomeProduto Like BOS*
AVG
Calcula a média aritmética de um conjunto de valores contidos em um campo especificado de uma consulta. Sua sintaxe é a seguinte:
Avg(expr)
Onde expr representa o campo que contém os dados numéricos para os que se deseja calcular a média ou uma expressão que realiza um cálculo utilizando os dados de tal campo. A média calculada por Avg é a média aritmética (a soma dos valores dividido pelo número de valores). A função Avg não inclui nenhum campo Null no cálculo.
SELECT
Avg(Gastos) AS Promedio
FROM
Pedidos
WHERE
Gastos > 100
Count
Calcula o número de registros devolvidos por uma consulta. Sua sintaxe é a seguinte
Count(expr)
Onde expr contém o nome do campo que se deseja contar. Os operandos de expr podem incluir o nome de um campo de uma tabela, uma constante ou uma função (a qual pode ser intrínseca ou definida pelo usuário, mas não outras das funções agregadas de SQL). Pode contar com qualquer tipo de dados inclusive texto.
Embora expr possa realizar um cálculo sobre um campo, Count simplesmente conta o número de registros sem ter em conta que valores se armazenam nos registros. A função Count não conta os registros que têm campos null a não ser que expr seja o caractere asterisco (*). Se utilizar um asterisco, Count calcula o número total de registros, incluindo aqueles que contém campos null. Count(*) é consideravelmente mais rápida que Count(Campo). Não se deve colocar o asterisco entre aspas duplas ('*').
SELECT
Count(*) AS Total
FROM
Pedidos
Se expr identifica a múltiplos campos, a função Count conta um registro só se ao menos um dos campos não for Null. Se todos os campos especificados forem Null, não se contará o registro. Há que separar os nomes dos campos com ampersand (&).
SELECT
Count(DataEnvio & Transporte) AS Total
FROM
Pedidos
Podemos fazer com que o gestor conte os dados diferentes de um determinado campo
SELECT
Count(DISTINCT Localidade) AS Total
FROM
Pedidos
Max, Min
Devolvem o mínimo ou o máximo de um conjunto de valores contidos em um campo especifico de uma consulta. Sua sintaxe é:
Min(expr)
Max(expr)
Onde expr é o campo sobre o qual se deseja realizar o cálculo. Expr pode incluir o nome de um campo de uma tabela, uma constante ou uma função (a qual pode ser intrínseca ou definida pelo usuário, porém não outras das funções agregadas de SQL).
SELECT
Min(Gastos) AS ElMin
FROM
Pedidos
WHERE
Pais = 'Espanha'
SELECT
Max(Gastos) AS ElMax
FROM
Pedidos
WHERE
Pais = 'Espanha'
StDev, StDevP
Devolve estimações do desvio padrão para a povoação (o total dos registros da tabela) ou uma mostra da povoação representada (mostra aleatória). Sua sintaxe é:
StDev(expr)
StDevP(expr)
Onde expr representa o nome do campo que contém os dados que desejam avaliar ou uma expressão que realiza um cálculo utilizando os dados de tais campos. Os operandos de expr podem incluir o nome de um campo de uma tabela, uma constante ou uma função (a qual pode ser intrínseca ou definida pelo usuário, porém não outras das funções agregadas de SQL).
StDevP avalia uma povoação, e StDev avalia uma mostra da povoação. Se a consulta contém menos de dois registros (ou nenhum registro para StDevP), estas funções devolvem um valor Null (o qual indica que o desvio padrão não pode se calcular).
SELECT
StDev(Gastos) AS Desvio
FROM
Pedidos
WHERE
País = 'Espanha'
SELECT
StDevP(Gastos) AS Desvio
FROM
Pedidos
WHERE
País = 'Espanha'
Sum
Devolve a soma do conjunto de valores contido em um campo especifico de uma consulta. Sua sintaxe é:
Sum(expr)
Onde expr representa o nome do campo que contém os dados que se desejam somar ou uma expressão que realiza um cálculo utilizando os dados de tais campos. Os operandos de expr podem incluir o nome de um campo de uma tabela, uma constante ou uma função (a qual pode ser intrínseca ou definida pelo usuário, mas não outras das funções agregadas de SQL).
SELECT
Sum(PrecoUnidade * Quantidad) AS Total
FROM
DetalhePedido
Var, VarP
Devolve uma estimação da variabilidade de uma povoação (sobre o total dos registros) ou uma mostra da povoação (mostra aleatória de registros) sobre os valores de um campo. Sua sintaxe é:
Var(expr)
VarP(expr)
VarP avalia uma povoação, e Var avalia uma mostra da povoação. Expr o nome do campo que contém os dados que se desejam avaliar ou uma expressão que realiza um cálculo utilizando os dados de tais campos. Os operandos de expr podem incluir o nome de um campo de uma tabela, uma constante ou uma função (a qual pode ser intrínseca ou definida pelo usuário, mas não outras das funções agregadas de SQL)
Se a consulta contiver menos de dois registros, Var e VarP devolvem Null (isto indica que a variabilidade não pode ser calculada). Pode utilizar Var e VarP em uma expressão de consulta ou em uma Instrução SQL.
SELECT
Var(Gastos) AS Variabilidade
FROM
Pedidos
WHERE
País = 'Espanha'
SELECT
VarP(Gastos) AS Variabilidade
FROM
Pedidos
WHERE
País = 'Espanha'
COMPUTE de SQL-SERVER
Esta cláusula acrescenta uma fila no conjunto de dados que se está recuperando, se utiliza para realizar cálculos em campos numéricos. COMPUTE age sempre sobre um campo ou expressão do conjunto de resultados e esta expressão deve figurar exatamente igual na cláusula SELECT e sempre se deve ordenar o resultado pela mesma ou ao memos agrupar o resultado. Esta expressão não pode utilizar nenhum ALIAS.
SELECT
IdCliente, Count(IdPedido)
FROM
Pedidos
GROUP BY
IdPedido
HAVING
Count(IdPedido) > 20
COMPUTE
Sum(Count(IdPedido))
SELECT
IdPedido, (PrecoUnidade * Quantidade - Desconto)
FROM
[Detalhes de Pedidos]
ORDER BY
IdPedido
COMPUTE
Sum((PrecoUnidade * Quantidade - Desconto)) // Calcula o Total
BY IdPedido // Calcula o Subtotal