mysql - 如何获取显示某个时间间隔内每个用户的事件的表格?

标签 mysql analytics bigdata

这很难用一个问题来解释,但是这里是。

在 MySQL 数据库中,我有一个名为 video 的表,其中包含创建的所有视频。 结构是这样的

id
owner
title
created_at

我有另一个表用户,类似这样

id
name
created_at

目标是得到下图 enter image description here

x轴是月份# y 轴是每月的视频数量

如您所见,它显示了每个用户每月创建的视频数量。但第一个月始终是从用户创建之日起 30 天。因此,对于用户 Ben 来说,它将是从 2016-10-01 到 2016-11-01,但对于 Rick 来说,则是从 2016-08-01 到 2016-09-01

因此,Ben 的第一个月与 Rick 的第一个月相差大约 60 天。

但在图表中我想将它们全部显示为第 1 个月

我现在的解决方案是“标准化”数据。因此,为了获取 Ben 的数据,我计算了固定日期(我将其设置为 2016-01-01)之间的差异并计算了天数差异。

然后我减去所有视频的天数,这样第一个月的所有视频将是 2016-01-01 到 2016-02-01

这可行,但我真的不确定这是否是最好的方法。

有人对如何执行此操作有更好的想法吗?

谢谢

最佳答案

有人告诉我有更好的方法。 我们没有像我那样标准化日期,而是创建一个新属性

我更新了 create_video 事件,使其具有 age_of_user 之类的属性。然后我可以通过age_of_user分组来查看他们在任意月份上传的视频数量。

类似的东西

{
    age_of_user: {
    days: 64,
    weeks: 9
    months: 2,
   }
}

每个事件都是使用这个新属性创建的。 当我查询时,我按月份和用户分组并获取我需要的所有数据

这样我就不需要弄乱视频的时间戳,并且可以在不同的查询中使用它。

关于mysql - 如何获取显示某个时间间隔内每个用户的事件的表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287270/

相关文章:

c# - 如何将字符串名称日期转换为 DateTimeFormat Mysql c#?

mysql - 如何从连接结果中排除 NULL 行

php - 处理大量 MySQL 表

php - 将 Rails 模型连接到非 Rails 数据库

google-analytics - Google Analytics(分析)非交互事件如何影响活跃用户计数?

performance - 将大表从一个 Hive 数据库转移到另一个

mysql - 优化 SQL 子查询进行统计

r - 在散点图中标记异常值

analytics - 如何从Azure数据湖分析文件(txt和CSV等文件)中获取记录计数

python - PySpark:将时间戳转换为数据帧中的整数时不一致