计算mysql与一周之间的差异

问题描述 投票:0回答:2

我需要在Week Over Week Users栏中显示与mysql的每周差异。我的数据如下所示:

Date          Users          Week Over Week Users 
06-01-2019    10              10
06-08-2019    15              15
06-15-2019    5               5

当前,Week Over Week Users仅反映我在Users列中拥有的数据。所需的输出将是:

Date          Users          Week Over Week Users 
06-01-2019    10              10
06-08-2019    15              5
06-15-2019    5               -10

基本上,如果在第二周用户数量增长到15个,那么我需要显示5个(自上周以来为+5个用户,因此new week Users - last week Users将是公式)

这是我的代码:

(
    SUM(
        CASE
            WHEN WEEK(`Date`) = WEEK(CURRENT_DATE()) THEN `Users`
            ELSE 0
        END
    ) - SUM(
        CASE
            WHEN WEEK(`Date`) = WEEK(CURRENT_DATE()) - 1 THEN `Users`
            ELSE 0
        END
    )
)  

但是它无法复制“用户”列。

mysql sql formula difference domo
2个回答
0
投票

您要lag()

select t.*,
       (users - lag(users, 1, 0) over (order by date)) as week_over_week
from t;

0
投票

如果运行的是MySQL 5.x,其中没有诸如lag()之类的窗口函数,则可以使用相关子查询来获取“上一个”值:

select
    t.date,
    t.users,
    t.users - coalesce(
        (
            select t1.users 
            from mytable t1 
            where t1.date < t.date 
            order by t1.date desc
            limit 1
        ),
        0
    ) week_over_week_users
from mytable t
© www.soinside.com 2019 - 2024. All rights reserved.