tsql - 仅当它们彼此相隔一周内时才对行求和
问题描述
我有一张包含 ProductID、日期和价格的表格。我正在尝试编写以下代码:
- 确定每种产品销量最高的那一周
- 忽略productid,找出销售额最大化的周数,即将所有日期分成7 天的时段,以便在每个7 天的时段内销售额最大化。这些 7 天周期周不允许重叠
我对 SQL 真的很陌生,我已经为此苦苦挣扎了几天,并查看了堆栈溢出。在第一个任务中,我认为我找到了理想的代码,但它似乎对其他人有用,但只返回给定日期的产品销售额,而不是一周的总和。
Select a.date, a.productid, sum(sales) from
(SELECT [Date Of Sale] as 'Date'
,[Product ID] as 'ProductID'
, [Sales in GBP] as 'Sales'
FROM [blah].[blah-blah])
) as a
where a.date between dateadd(day, -6, a.date) and dateadd(day, 0, a.date)
group by a.date, a.productid;
我试图修剪必要的东西,但没有错误消息,它只返回日期、productid、销售额,但对于日期“2007-01-13”,它只返回当天的产品销售额,而不是比从“2007-01-06”到“2007-01-13”的总销售额。任何帮助将不胜感激。
解决方案
您使用的是什么版本的 SQL?MySQL 4.0 及更高版本具有函数 WEEK(),它将日期拆分为从 0 到 53 的周,表示一年中的周顺序。查看您的代码,以及您正在尝试做的事情,我认为以下内容可能对您有用:
SELECT WEEK([Date of Sale]) as date,
[Product ID] as product_id,
sum([Sales in GBP]) as sales
FROM [blah].[blah-blah]
group by 1,2
这将为您提供 52 或 53 行,用于一年中的每个完整和部分周(除非您在给定的一周内没有销售)。我希望这回答了你的问题?如果不是,我可以提供其他解决方案,但我正在节省自己的写作时间。
推荐阅读
- r - 在 R 中拟合 copula 模型
- xamarin - 使用页面之间的自定义移动在 Xamarin 表单中导航
- vb.net - 从特定文本中查找 MD5 字符串
- xaml - UWP ListView DataTemplate 绑定到项目而不是属性
- python - 需要帮助理解为什么我得到属性错误
- spreadsheet - 如何将可搜索数据插入一列,并在下一列中显示链接的可编辑数据?
- powershell - Azure 管道 - 将 .coverage 转换为 xml 以生成代码覆盖率报告
- laravel - 如何在laravel中使用javascript计算折扣
- ruby-on-rails - 如何在 Ruby on Rails 中检索链接的值
- android - 如何通过android中的房间删除数据库元数据?