oracle sum over 函数实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/84959222

实现业务场景需求

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

猜你喜欢

转载自blog.csdn.net/catoop/article/details/84959222