实现业务场景需求

代购商从外采购一批化妆品,总数量为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