【问题标题】:Growth for each quarter+year in SQL over my user table我的用户表上 SQL 中每个季度和年度的增长
【发布时间】:2017-06-13 12:12:00
【问题描述】:

我正在使用 MYSQL,并且我有一个用户数据库表,其中存储了我的注册用户。我很想知道每个季度有多少用户在越来越多的时间线上注册。所以也许 2016 年第一季度我总共有 1000 个用户,然后在 2016 年第二季度我注册了 2000 个用户,在 2016 年第三季度注册了 4000 个用户,等等(所以我希望看到增长,而不仅仅是每个季度注册的用户数)

从另一个 Stack Overflow 帖子中,我能够创建一个查询来查看它的每一天:

select u.created, count(*)
from (select distinct date(DateCreated) created from `Users`) u
join `Users` u2 on u.created >= date(u2.DateCreated)
group by u.created

这适用于每一天,但我现在想按季度和年度对其进行分组。我尝试在 mysql 中使用 QUARTER(d) 函数,甚至使用 QUARTER(d) + YEAR(d) 来连接它,但我仍然无法正确获取数据(计数(*)最终产生了令人难以置信的高值)。

谁能帮我把我的数据按季度/年分组?我的时间戳列称为 DateCreated(它是一个以毫秒为单位的 unix 时间戳,所以我也必须除以 1000)

非常感谢

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需的结果。

标签: mysql sql


【解决方案1】:

我建议使用相关子查询——这使您可以轻松地定义结果集中的每一行。我认为这是您想要的逻辑:

select dates.yyyy, dates.q,
       (select count(*)
        from Users u
        where u.DateCreated < dates.mindc + interval 3 month
       ) as cnt
from (select year(DateCreated) as yyyy, quarter(DateCreated) as q 
             min(DateCreated) as mindc
      from Users u
      group by year(DateCreated), quarter(DateCreated)
     ) dates;

【讨论】:

  • 非常感谢。这做到了!你太棒了。
猜你喜欢
  • 2020-09-02
  • 2018-12-20
  • 2013-12-02
  • 2021-02-10
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多