这只是一个问题很难解释,不过这里有。
在MySQL数据库中,我有一个名为video的表,其中包含所有已创建的视频。 结构是这样的
id
owner
title
created_at
我有另一个表用户,类似这样的
id
name
created_at
x轴是月份# y轴是每月的视频数量
如您所见,它显示了每个用户每个月创建的视频数量。但是,第一个月始终是用户创建之日起30天。所以对于用户Ben来说,它将从2016-10-01到2016-11-01但是对于Rick来说是2016-08-01到2016-09-01
因此,Ben的第一个月与Rick的第一个月相差大约60天。
但是在图表中我想将它们全部显示为月份#1
我现在的解决方案是“规范化”数据。因此,为了获取本的数据我采用了固定日期(我将其设置为2016-01-01)之间的差异并计算了天数的差异。
然后我减去所有视频的天数,这样所有视频的第一个月将是2016-01-01到2016-02-01
这样可行,但我真的不确定这是否是最佳方法。
任何人都知道如何做到这一点?
由于
答案 0 :(得分:0)
我被告知更好的方法。 我们只是创建一个新属性
,而不是像我一样正常化日期我将create_video
事件更新为拥有age_of_user
之类的资源。然后我可以group_by age_of_user
查看他们在任何月份上传的视频数量。
像
这样的东西{
age_of_user: {
days: 64,
weeks: 9
months: 2,
}
}
使用此新属性创建每个事件。 当我按月和按用户查询我并获取我需要的所有数据时
通过这种方式,我不需要弄乱视频的时间戳,我可以在不同的查询中使用它。