实现业务场景需求
代购商从外采购一批化妆品,总数量为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 |