sql - 使用日期进行复杂的统计
问题描述
我使用一个虚构的问题来说明,因为这是敏感数据。
我有一张大表,计算一个国家/地区每个城市每月有多少人(每两个月一行,城市)我想平均在特定事件后每月有多少人加入该城市发生了。
问题:该事件并非在每个城市的同一个月发生。因此,我不能只根据特定的共同日期进行一般统计。
如果事件发生在 2018 年 12 月在 A 市,而在 2019 年 4 月在 B 市发生,我需要第 0 个月才能成为 A 市的 12 月 18 日和 B 市的 4 月 19 日。
我怎么能做到这一点?
解决方案
我想出的解决方案是“标准化”日期。我添加了一个名为 的新列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。
然后,我可以通过显示相对月份每个值的平均值来制作图表。
我希望这是有道理的,并帮助遇到同样问题的人。
推荐阅读
- excel - Adding numbers into an alphanumeric value (Ex: "ABC" +1 = "ABD")
- python - Python 逆向词性能
- java - 如何以最短的等待时间加速 Java Selenium 脚本
- vue.js - 如何使用 v-model 绑定解码 HTML 实体‽
- python-3.x - 如何使用 Popen 和管道从 Python 运行 C 程序,以便例如 scanf() 等待管道上的输入?
- python - Python - for-loop 存储要发送到函数的值的理想方法
- ios - Apple 更改了 Metal 中允许的矢量格式
- c++ - 如何隐藏 Boost 侵入式列表挂钩?
- ios - UIImageView 掩码层不是来自角落,直到第一次滚动 PageViewController
- python-asyncio - 如何在 asyncio3.7 中向主协程添加多个任务?