我有这张表:
locationid |Sales |salesdate
:----------|:--------:|--------:
40 |571.00 |2007-01-01
40 |1377.00 |2007-01-02
40 |571.00 |2007-01-01
40 |1377.00 |2007-01-02
40 |571.00 |2007-01-01
40 |1377.00 |2007-01-02
40 |571.00 |2007-01-01
40 |1377.00 |2007-01-02
我有大约 200 个唯一的位置 ID,我的问题是如何按位置 ID 汇总 7 天的销售额?
我的总体目标是每个地点 7 天的销售额和每个地点去年 7 天的销售额。
理论上我只需要每个日期和 date-7 的总和,我应该有大约 52-53 个条目(取决于年份),但是我不确定该怎么做。
我翻了一下,发现了这个:
SELECT SUM(sales) as 'Total',
SUM( CASE WHEN convert(varchar(11),salesdate,101) >= convert(varchar(11),GETDATE() - 7,101)
THEN sales ELSE 0 END) as 'Current',
SUM( CASE WHEN convert(varchar(11),salesdate,101) >= convert(varchar(11),GETDATE() - 14,101)
THEN sales ELSE 0 END) as '7Days' ,
SUM( CASE WHEN convert(varchar(11),salesdate,101) >= convert(varchar(11),GETDATE() - 28,101)
THEN sales ELSE 0 END) as '14Days'
FROM [MYSQL].[wfmsales].[sales_bk]
然而,这只会计算总和,不会计算每个位置的总和,我还没有弄清楚那部分。非常感谢您抽出宝贵时间。这是我关于 stackoverflow 的第一篇文章,所以如果我做错了什么请告诉我。
最佳答案
使用日期函数进行日期运算。我不确定你想要什么输出,但在过去的 7 天里,你可以:
SELECT locationId, SUM(sales) as sales_Total,
SUM(CASE WHEN salesdate >= CURDATE() - INTERVAL 7 DAYS THEN sales ELSE 0 END) as sales_Current
FROM [MYSQL].[wfmsales].[sales_bk]
GROUP BY locationId;
您可以为任何时间段添加额外的 SUM(CASE)
表达式。
关于mysql - 按位置 ID 划分的每周销售额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351531/