Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
上个月关闭。
我试图获得前一周和前一周的总视图。我将它们分别称为WeekMinusOne和WeekMinusTwo。
因此,就目前而言,我希望获得前一周全周的观看次数,即12/23-12/29(我想在星期一开始我的一周),并希望获得WeekMinus 2的观看次数,即12.16-12.22。
虽然我知道我可以将其硬编码为确切的日期,但我希望它可以自动更新以反映新数据。我怎样才能做到这一点?
我要从中提取的表格的格式很简单。
只有两列,
简化看我的桌子
理想的结果
如果您的星期从星期一开始,它将为您提供当前星期的第一天。如this SO answer中所述,如果您的星期从星期日开始,则需要:
从那里开始,我们可以筛选前2周的表格并进行条件求和:
重要的是,由于它在日期列上不使用任何日期函数,因此该查询将从
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
上个月关闭。
我试图获得前一周和前一周的总视图。我将它们分别称为WeekMinusOne和WeekMinusTwo。
因此,就目前而言,我希望获得前一周全周的观看次数,即12/23-12/29(我想在星期一开始我的一周),并希望获得WeekMinus 2的观看次数,即12.16-12.22。
虽然我知道我可以将其硬编码为确切的日期,但我希望它可以自动更新以反映新数据。我怎样才能做到这一点?
我要从中提取的表格的格式很简单。
只有两列,
date | # of unique views!
简化看我的桌子
理想的结果
最佳答案
首先,请考虑以下表达式:
current_date - interval (weekday(current_date)) day
如果您的星期从星期一开始,它将为您提供当前星期的第一天。如this SO answer中所述,如果您的星期从星期日开始,则需要:
current_date - interval (dayofweek(current_date) - 1) day
从那里开始,我们可以筛选前2周的表格并进行条件求和:
select
sum(
case when view_date >= w.dt - interval 7 day then views else 0 end
) views_from_week_minus_one,
sum(
case when view_date < w.dt - interval 7 day then views else 0 end
) views_from_week_minus_two
from
views_table v
inner join (select current_date - interval (weekday(current_date)) day dt) w
on v.view_date >= w.dt - interval 14 day and and view_date < w.dt
重要的是,由于它在日期列上不使用任何日期函数,因此该查询将从
views_table(view_date)
上的索引中受益。半开间隔策略的另一个优点是,它将适当地处理日期的时间部分(如果有)。关于mysql - MySQL:从上周和上周的前一周中提取总计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59569369/
10-11 22:22