oracle sum over 函数实例
原创
©著作权归作者所有:来自51CTO博客作者catoop的原创作品,请联系作者获取转载授权,否则将追究法律责任
实现业务场景需求
代购商从外采购一批化妆品,总数量为30份。
现有一个用户需求登记表,记录每个用户需要代购的数量。
因为该批次采购不能完全覆盖所有登记用户的需求,现需要将已采购到货的商品尽可能发放给更多的用户。
按如下登记表,请使用一个SQL语句统计出可以发放的用户名单。
用户登记表(SHANHY_TEST)
用户编号(snum) |
需求数量(icount) |
---|
S001 |
2 |
S002 |
1 |
S003 |
1 |
S004 |
5 |
S005 |
8 |
S006 |
3 |
S007 |
4 |
S008 |
9 |
S009 |
10 |
S010 |
11 |
S011 |
5 |
S012 |
7 |
实现:查询SQL
SELECT T2.SNUM,T2.ICOUNT FROM (
SELECT T1.SNUM,T1.ICOUNT,SUM(ICOUNT) OVER(PARTITION BY A ORDER BY ICOUNT ASC) S FROM
(
SELECT 1 A,T.SNUM,T.ICOUNT FROM SHANHY_TEST_20181211 T
) T1
) T2
WHERE T2.S <= 30
查询结果
用户编号(snum) |
需求数量(icount) |
---|
S002 |
1 |
S003 |
1 |
S001 |
2 |
S006 |
3 |
S007 |
4 |
S011 |
5 |
S004 |
5 |
S012 |
7 |