【发布时间】:2021-08-25 06:11:15
【问题描述】:
我想使用下面提供的示例表在以下场景中获取报告数据(我的数据库中的数据很大)
- 列出项目(同一周,上一年)销售额和(同一天,同一周,上一年)销售额。
- 滚动 6 个月平均每周销售量
| id | date_week | date_value | sales |
|---|---|---|---|
| Item1 | 2020/01-04 | 20200120 | 230 |
| Item2 | 2020/06-03 | 20200608 | 23.0 |
| Item3 | 2019/11-03 | 20191111 | null |
| Item4 | 2020/07-04 | 20200720 | 123 |
| Item5 | 2019/08-01 | 20190729 | 456 |
| Item6 | 2019/09-03 | 20190909 | 1234 |
| Item7 | 2020/06-02 | 20200601 | 4556 |
| Item8 | 2020/09-01 | 20200824 | 23 |
| Item9 | 2021/09-02 | 20210906 | 1223 |
在上面的表格中 date_week 是年/月_周(所以我在这里得到周数)
我正在尝试以下查询来实现
SELECT
DATEPART(week, date_value) AS Week,
id ,
sum(sales) AS sales
FROM table
WHERE date_value <= date_value
AND date_value < DATEADD(year, 1, date_value)
GROUP BY DATEPART(week, date_value), id
ORDER BY DATEPART(week, date_value);
请建议我如何实现我正在寻找的场景。
【问题讨论】:
-
您正在混合数周和数月。这需要很多解释。请准确解释结果是什么样的,以及如何处理“6 个月”不是确切的周数这一事实。
-
@GordonLinoff,忽略 date_week 以及如何使用普通日历获得 6 个月的平均销售量
-
我认为这里仍然存在一些混乱。您的示例代码建议的日期范围为 1 年 (
WHERE date_value <= date_value AND date_value < DATEADD(year, 1, date_value)),但您之前的评论要求“平均 6 个月”。此外,您可能需要提供源表的示例和/或模式,以便我们知道我们正在处理的类型。最后,“6 个月平均每周销售”没有多大意义。您是否希望将六个月内的所有销售额加起来,然后通过将该总数除以 [[然而六个月内发生多少周]] 来获得每周平均值?谢谢 -
@ChrisWalsh,我的错误无法解释我的问题陈述。实际上我正在寻找“6 个月滚动平均”。
标签: sql sql-server database tsql sql-date-functions