over函数的用法:
1.用于局部求和,比如,求某人在某个时间段内的订单额综合
select orderid,orderdate,
--orderdate数据格式为2013-01,结果为根据年月份求出总额度
sum(orderprice) over(partition by orderdate) from orders
2.用于生成自动增长列
select row_number() over(order by orderid) as rownumber, orderid from orders
3.用于局部生成自动增长列
SELECT
--根据custid将数据分组,然后生成自动增长列
ROW_NUMBER() over(partition by custid order by val asc) as num, orderid, custid, val, SUM(val) OVER() AS totalvalue, SUM(val) OVER(PARTITION BY custid) AS custtotalvalue FROM Sales.OrderValues;
执行结果:
1 10702 1 330.00 1265793.22 4273.00 2 10952 1 471.20 1265793.22 4273.00 3 10643 1 814.50 1265793.22 4273.00 4 10835 1 845.80 1265793.22 4273.00 5 10692 1 878.00 1265793.22 4273.00 6 11011 1 933.50 1265793.22 4273.00 1 10308 2 88.80 1265793.22 1402.95 2 10759 2 320.00 1265793.22 1402.95 3 10625 2 479.75 1265793.22 1402.95 4 10926 2 514.40 1265793.22 1402.95 1 10682 3 375.50 1265793.22 7023.98 2 10365 3 403.20 1265793.22 7023.98 3 10856 3 660.00 1265793.22 7023.98 4 10507 3 749.06 1265793.22 7023.98 5 10677 3 813.37 1265793.22 7023.98