La cláusula SQL OVER (): ¿cuándo y por qué es útil?
USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, ProductID, OrderQty
,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total'
,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg'
,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count'
,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min'
,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max'
FROM Sales.SalesOrderDetail
WHERE SalesOrderID IN(43659,43664);
Leí sobre esa cláusula y no entiendo por qué la necesito. ¿Qué hace la funciónOver
do? Que hacePartitioning By
do? ¿Por qué no puedo hacer una consulta escribiendoGroup By SalesOrderID
?