具有运行总计的 SQL 分区
Posted
技术标签:
【中文标题】具有运行总计的 SQL 分区【英文标题】:SQL partition with running totals 【发布时间】:2021-10-28 02:39:04 【问题描述】:我正在想办法解决以下问题:
用户每月购买 x $ 数量的商品。他们每购买 2500 美元,就可以获得一张礼品卡。如果在给定的一个月内,他们没有购买价值 2500 美元的商品,则购买的金额将结转到下个月并计入购买总额。
例如: 一月 - 购买金额为 200 美元。这不到 2500 美元,因此,200 美元结转到 2 月 2 月 - 购买金额为 600 美元。 600 美元 + 200 美元小于 2500 美元,因此,800 美元滚存到 3 月。 3 月 - 购买金额 1900 美元。所以,1900 美元 + 800 美元 = 2700 美元。已赚取 1 张礼品卡,并将 200 美元转入 4 月。
我希望能够计算每个月赚取的礼品卡。
谢谢
我的表有以下列:FiscalYear、FiscalMonth、Customer、AmountPurchased。
【问题讨论】:
【参考方案1】:-- Total Gift Cards this month
,FLOOR
(
ISNULL
(
SUM(AmountPurchased) OVER (PARTITION BY Customer ORDER BY FiscalYear, FiscalMonth)
,0
) / 2500
)
-- subtract Total Gift Cards last month
-
FLOOR
(
ISNULL
(
SUM(AmountPurchased) OVER (PARTITION BY Customer
ORDER BY FiscalYear, FiscalMonth ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
,0
) / 2500
) AS GiftCardsThisMonth
【讨论】:
这是完美的。正是我需要的!谢谢!以上是关于具有运行总计的 SQL 分区的主要内容,如果未能解决你的问题,请参考以下文章