Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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