【问题标题】:SQL Server - Assignment (sum) of the volume of the last 52 weeks to a given weekSQL Server - 过去 52 周到给定周的交易量的分配(总和)
【发布时间】:2018-12-21 13:01:23
【问题描述】:

我正在尝试在 SQL 中使用 partition-by 来评估一个复杂的值

它是从过去 56 到 4 周窗口到给定一周的数据量的总和。

表格的属性:Product、Shop、Week、Category、Volume

数据:超过 150 周的数据,

目标:选择“CategoryWeekVolume”的值,即给定类别过去 56-4 周的销量总和。

尝试过:我尝试过多种组合中的 case-whens、over-partition-by,但我在 SQL 方面经验不足,并且 我不知道如何以一种聪明的方式做到这一点,而不是添加 52 列,体积从第 4 周到第 56 周。

一般情况是 t0.[WEEK]-t1.[WEEK]>4 and t0.[WEEK]-t1.[WEEK]<57 和 总和应该是每个类别。

非常感谢任何意见。

【问题讨论】:

  • 示例数据、预期结果(格式为 text 或 DDL 和 DML 语句)和您的尝试(您编写的实际 SQL)在这里会很有帮助。
  • sum(case when t0.[WEEK]-t1.[WEEK] > 4 and t0.[WEEK]-t1.[WEEK] < 57 then volume else null end) over(partition by category)?

标签: sql sql-server case-when partition-by


【解决方案1】:

假设WeekINT

SELECT 
  Category,
  Week, 
  SUM(Volume) AS CategoryWeekVolume 
FROM 
  tablename
WHERE 
  Week 
  BETWEEN 
    (SELECT MAX(Week) FROM tablename) - 56 
    AND
    (SELECT MAX(Week) FROM tablename) - 4 
GROUP BY Category, Week

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多