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?

Respuestas a la pregunta(7)

Su respuesta a la pregunta