【问题标题】:MYSQL Daily Data Compare Last Week vs Two Weeks Ago上周与两周前的 MYSQL 每日数据比较
【发布时间】:2023-04-03 14:13:01
【问题描述】:

我有多个地点的每日数据,我们需要将上周的总销售额与两周前的总销售额进行比较。这是MYSQL代码

SELECT
    name,
    SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales ELSE NULL END) as 'Last Week',
    SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales ELSE NULL END) as '2 Weeks Ago',
    SUM('1week' - '2week') AS 'Change'
FROM daily_sales
GROUP BY name

第一三列的输出是正确的,但我无法正确计算第四列的“变化”。尝试了 SUM 的案例,但无法克服无效的使用 og 组功能:

SUM((SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales ELSE NULL END)) 
- (SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales ELSE NULL END))) AS 'change'

救命!

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你快到了;只需采用给出第 2 列和第 3 列的公式并在它们之间加上一个减号:

    SELECT 
      name, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales END) as LastWeek, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales END) as TwoWeeksAgo,
      SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales END) - SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales END) as change
    FROM daily_sales
    WHERE date >= date_sub(now(), interval 3 week)
    GROUP BY name
    

    或者通过使用子查询:

    SELECT name, lastweek, twoweeksago, lastweek - twoweeksago as change
    FROM
    (
     SELECT 
      name, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales END) as LastWeek, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales END) as TwoWeeksAgo
     FROM daily_sales
     WHERE date >= date_sub(now(), interval 3 week)
     GROUP BY name
    ) x
    

    或者通过使用 cte:

    WITH x AS(
     SELECT 
      name, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-1 THEN sales END) as LastWeek, 
      SUM(CASE WHEN WEEK(date) = WEEK(now())-2 THEN sales END) as TwoWeeksAgo
     FROM daily_sales
     WHERE date >= date_sub(now(), interval 3 week)
     GROUP BY name
    )
    
    SELECT name, lastweek, twoweeksago, lastweek - twoweeksago as change
    

    【讨论】:

    • 谢谢!我尝试了很多次......可能是一个错误的“(”
    • 做这些事情的另一种方法是使用子查询来减少重复,我将添加一个示例
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多