Stream Aggregate (operador de Showplan)

El operador Stream Aggregate agrupa las filas por una o varias columnas y, a continuación, calcula una o varias expresiones agregadas devueltas por la consulta. Los operadores posteriores de la consulta pueden hacer referencia al resultado de este operador, devolverse al cliente, o ambas cosas. El operador Stream Aggregate requiere que la información esté ordenada por las columnas dentro de sus grupos. El optimizador usará un operador Sort antes que este operador si los datos no están ordenados por un operador Sort anterior o por un Index Seek o Scan. En la instrucción SHOWPLAN_ALL o en el plan de ejecución gráfico de SQL Server Management Studio, las columnas del predicado GROUP BY se enumeran en la columna Argument y las expresiones agregadas se enumeran en la columna Defined Values.

Stream Aggregate es un operador físico.

Icono del operador Stream AggregateIcono del plan de ejecución gráfico

Ejemplos

En el siguiente ejemplo, se seleccionan datos de la tabla SalesPerson y se agregan los valores de las columnas Bonus y SalesYTD por territorio. La salida del plan de ejecución muestra que el optimizador de consultas usa el operador Stream Aggregate para agrupar las filas de la tabla SalesPerson por la columna TerritoryID y, a continuación, calcula los valores de las columnas AVG(Bonus) y SUM(SalesYTD) en función de ese agrupamiento.

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 continuación se muestra la salida del plan de ejecución del operador Stream Aggregate.

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])