Instrução SELECT avançada combinada com funções de agregação de dados
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
Funções de agregação de dados
Às vezes, os desenvolvedores também podem solicitar a análise de linhas, como contagem de linhas, atendimento a critérios específicos ou resumo de vendas para todos os pedidos. A função agregada permite fazê-lo.
Como as funções de agregação retornam um único valor, elas podem ser usadas em estados SELECT em que uma expressão é usada, como as cláusulas SELECT, HAVING e ORDER BY. As funções agregadas ignoram NULLS, exceto ao usar COUNT(*).
As funções agregadas na lista SELECT não terão nomes de coluna, talvez queira usar a cláusula AS para definir nomes de coluna.
A função agregada é uma cláusula SELECT que opera em todas as linhas passadas para a fase SELECT. Sem a cláusula GROUP BY, todas as linhas serão resumidas.
Algumas funções agregadas:
Nome da função | Sintaxe _ | Descrever |
AVG | AVG(<expressão>) | Calcular a média de todos os valores não NULL na coluna |
COUNT ou COUNT_BIG | COUNT(*) ou COUNT(<expressão>) | Quando (*) é usado, esta função conta todas as linhas, incluindo aquelas com NULLs. A função conta todas as linhas, incluindo aquelas com NULLs. A função retorna o número de linhas não NULL para a coluna quando uma coluna é especificada como . O valor de retorno da função COUNT é um int. O valor de retorno de COUNT_BIG é big_int |
MÁX. | MAX(<expressão>) | Retorna o maior número, a data/hora mais recente ou a string de ocorrência mais recente. |
MIN | MIN(<expressão>) | Retorna o menor número, a data ou hora mais distante ou a string que ocorre primeiro |
RESUMO | SOMA(<expressão>) | Soma todos os valores não NULL na coluna.. |
Por exemplo:
SELECT AVG([UnitPrice]) AS AvgUnitPrice, MIN([OrderQty]) AS MinQty, MAX([UnitPriceDiscount]) AS MaxDiscount FROM Sales.SalesOrderDetail;
Ao usar agregação na cláusula SELECT, todas as colunas distintas na lista SELECT devem ser usadas como entrada para uma função de agregação ou devem ser referenciadas na cláusula GROUP BY. Se falhar, ocorrerá um erro.
Exemplo de consulta que retornará um erro:
SELECT SalesOrderID,AVG(UnitPrice) AS AvgPrice FROM Sales.SalesOrderDetail;
Erro retornado:
Column 'Sales.SalesOrderDetail.SalesOrderID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Para corrigir isso, basta remover a coluna SalesOrderID na instrução SELECT.
Além de utilizar funções agregadas com dados numéricos, pode ser utilizado com dados de data, hora, caracteres.
Exemplo usando MIN e CODE para obter a data do pedido mais próxima e mais distante
SELECT MIN(OrderDate) AS Earliest, MAX(OrderDate) AS Lastest FROM Sales.SalesOrderHeader
Síntese espacial
O SQL Server fornece vários métodos para agregar dois itens de dados geométricos ou geográficos individuais.
Método | Descrever |
STUnião | Retorna um objeto que representa a união de uma geometria/característica geográfica com outra geometria/característica geográfica. |
STIntersecção | Retorna um objeto que representa a interseção de uma geometria/característica geográfica e outra geometria/característica geográfica |
STConvexHull | Retorna um objeto que representa a parte convexa de um recurso geométrico/geográfico. Um conjunto de pontos é convexo se, para quaisquer dois pontos, todo o segmento estiver contido nesse conjunto. A casca convexa de um conjunto de pontos é o menor conjunto convexo que contém o conjunto. Para qualquer conjunto de pontos, existe apenas uma casca convexa. |
Por exemplo:
SELECT geometry::Point(251,1,4326).STUnion(geometry::Point(252,2,4236));
Exemplo 2:
DECLARE @City1 geography SET @City1=geography::STPolyFromText('POLYGON((175.3 -41.5,183.3 -37.9,172.8 -34.6,175.3 -41.5))',4326) DECLARE @City2 geography SET @City2=geography::STPolyFromText('POLYGON((169.3 -46.6,174.3 -41.6,172.5 -40.7,166.3 -45.8,169.3 -46.6))',4326) DECLARE @CombinedCity geography=@City1.STUnion(@city2) SELECT @CombinedCity
Algumas funções de agregação espacial
Agregado da União
Ele executa a operação de mesclagem em um conjunto de objetos geométricos. Ele combina vários objetos espaciais em um único objeto espacial, removendo os limites internos, se houver.
Por exemplo:
SELECT Geography::UnionAggregate (SpatialLocation) AS AVGLocation FROM Person.Address WHERE City='London';
Agregado de envelope
Por exemplo:
SELECT Geography::EnvelopeAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='London'
Agregado de casco convexo
Por exemplo:
SELECT Geography::ConvexHullAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='Lodon'