Excellent question. I learned something useful.
One application of OVER that seems to have potential (note hedging 😉 ) is that it allows applying aggregate function to more than one different grouping in the same query. For instance,
select customerID, productID, orderDate, orderAmount,
CustomerTotal = sum(orderAmount) over (partition by customerID),
ProductTotal = sum(orderAmount) over (partition by productID)
from Orders
Any thoughts on performance?
Edited for clarity.