Operador de plano de execução Stream Aggregate
O operador Stream Aggregate agrupa linhas através de uma ou mais colunas e em seguida calcula uma ou mais expressões de agregação retornadas pela consulta. A saída deste operador pode ser referenciada por operadores posteriores na consulta, retornada ao cliente, ou ambos. O operador Stream Aggregate requer a entrada de dados ordenada pelas colunas dentro de seus grupos. O otimizador usará um operador Sort antes deste operador se os dados ainda não estiverem classificados em função de um operador Sort anterior ou devido a uma busca ou varredura de índice ordenado. Na instrução SHOWPLAN_ALL ou no plano de execução gráfica no SQL Server Management Studio, são listadas as colunas no predicado GROUP BY na coluna Argumento, e as expressões de agregação são listadas na coluna Valores Definidos.
O operador Stream Aggregate é um operador físico.
Ícone do plano de execução gráfica
Exemplos
O exemplo a seguir seleciona dados da tabela SalesPerson e agrega os valores para as colunas Bonus e SalesYTD por território. A saída do plano de execução mostra que o otimizador de consulta usa o operador Stream Aggregate para agrupar as linhas na tabela SalesPerson pela coluna TerritoryID e, em seguida, calcula os valores para as colunas AVG(Bonus) e SUM(SalesYTD) com base nesse agrupamento.
USE AdventureWorks2008R2;
GO
SET NOCOUNT ON;
GO
SET SHOWPLAN_ALL ON;
GO
SELECT TerritoryID,
AVG(Bonus) AS 'Average bonus',
SUM(SalesYTD) AS'YTD sales'
FROM Sales.SalesPerson
GROUP BY TerritoryID;
GO
SET SHOWPLAN_ALL OFF;
A saída do plano de execução do operador Stream Aggregate é exibida abaixo.
StmtText
------------------------------------------------------------------------------------------------
|--Stream Aggregate(GROUP BY:([AdventureWorks2008R2].[Sales].[SalesPerson].[TerritoryID]) )
DEFINE:([Expr1011]=Count(*),
[Expr1012]= SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[SalesYTD])))
Argument
-----------------------------------------------------------------------------------------------
GROUP BY:([AdventureWorks2008R2].[Sales].[SalesPerson].[TerritoryID]
DefinedValues
----------------------------------------------------------------------------------------------
[Expr1011]=Count(*),
[Expr1012]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[Bonus]),
[Expr1004]=SUM([AdventureWorks2008R2].[Sales].[SalesPerson].[SalesYTD])
Consulte também