【问题标题】:Is there a way to count values from a year prior (YoY%)?有没有办法计算前一年的值(YoY%)?
【发布时间】:2021-04-30 08:46:09
【问题描述】:

我目前正在使用 mySQL,并且很难弄清楚这个看似简单的查询。我正在尝试按月跟踪注册,通过年同比比较选择给定日期的注册数量,同一日期但一年前的注册数量,然后是一个额外的列,该列采用百分比变化两者之间。

到目前为止,我有以下列没有问题:

Date | User Registrations
__________

但是,我想得到:

Date | User Registrations | Previous Year # | % Change
_______

这是我当前的查询。

SELECT DATE_FORMAT(created_at,'%M %Y') AS "Month", count(*) AS "New User Registrations", 
from users
WHERE `created_at` > "2018-01-01 00:00:00"
INNER JOIN
GROUP BY YEAR(created_at), MONTH(created_at)

如果有人知道如何从一年前获取匹配值,我将不胜感激。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    假设您每个月都有数据,请使用lag()

    SELECT DATE_FORMAT(created_at, '%M %Y') AS "Month",
           COUNT(*) AS "New User Registrations", 
           LAG(COUNT(*)) OVER (ORDER BY MIN(created_at)) as prev_year,
           ( COUNT(*) / LAG(COUNT(*)) OVER (ORDER BY MIN(created_at)) ) - 1 as change
    FROM users u
    WHERE `created_at` > '2018-01-01'
    GROUP BY DATE_FORMAT(created_at, '%M %Y')
    

    【讨论】:

    • 非常感谢您的快速回复!不幸的是,它不起作用。不过,我每个月都有信息/数据。还有什么我应该注意的吗?]
    猜你喜欢
    • 2022-11-10
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2012-11-04
    相关资源
    最近更新 更多