首页 > 解决方案 > 使用日期进行复杂的统计

问题描述

我使用一个虚构的问题来说明,因为这是敏感数据。

我有一张大表,计算一个国家/地区每个城市每月有多少人(每两个月一行,城市)我想平均在特定事件后每月有多少人加入该城市发生了。

问题:该事件并非在每个城市的同一个月发生。因此,我不能只根据特定的共同日期进行一般统计。

如果事件发生在 2018 年 12 月在 A 市,而在 2019 年 4 月在 B 市发生,我需要第 0 个月才能成为 A 市的 12 月 18 日和 B 市的 4 月 19 日。

我怎么能做到这一点?

标签: sqlhiveql

解决方案


我想出的解决方案是“标准化”日期。我添加了一个名为 的新列relative_month,其计算如下:

row_year* 12 + row_month- event_occured_year*12 -event_occured_month

因此,现在每行都标有与事件相对的月份,与实际日期无关。 relative_month在偶数月为 0。relative_month是 -3 事件前 3 个月。relative_month每个城市的事件发生后 1 年是 12。

然后,我可以通过显示相对月份每个值的平均值来制作图表。

我希望这是有道理的,并帮助遇到同样问题的人。


推荐阅读