【问题标题】:SQL partition with running totals具有运行总计的 SQL 分区
【发布时间】: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。

【问题讨论】:

    标签: sql window-functions


    【解决方案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
    

    【讨论】:

    • 这是完美的。正是我需要的!谢谢!
    猜你喜欢
    • 2019-03-19
    • 2015-12-18
    • 2015-12-20
    • 2021-10-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多