【发布时间】:2019-05-29 17:04:56
【问题描述】:
我正在尝试使用时间戳的 min() 值作为起点,然后按 30 天的时间间隔对数据进行分组,以便将时间戳日期范围内的每个唯一值的出现次数作为列获取
我有两个表,我将它们连接在一起进行计数。表 1 (page_creation) 有 2 列标记为 link 和 dt_crtd。表 2(页面访问)还有 2 个标记为 url 和 date 的列。通过加入 table1.link = table2.pagevisits 来加入表。
加入后我得到一个类似这样的表:
+-------------------+------------------------+
| url | date |
+-------------------+------------------------+
| www.google.com | 2018-01-01 00:00:00' |
| www.google.com | 2018-01-02 00:00:00' |
| www.google.com | 2018-02-01 00:00:00' |
| www.google.com | 2018-02-05 00:00:00' |
| www.google.com | 2018-03-04 00:00:00' |
| www.facebook.com | 2014-01-05 00:00:00' |
| www.facebook.com | 2014-01-07 00:00:00' |
| www.facebook.com | 2014-04-02 00:00:00' |
| www.facebook.com | 2014-04-10 00:00:00' |
| www.facebook.com | 2014-04-11 00:00:00' |
| www.facebook.com | 2014-05-01 00:00:00' |
| www.twitter.com | 2016-02-01 00:00:00' |
| www.twitter.com | 2016-03-04 00:00:00' |
+---------------------+----------------------+
我想要得到的是结果:
+-------------------+------------------------+------------+------------+-------------+
| url | MIN_Date | Interval 1 | Interval 2| Interval 3 |
+-------------------+------------------------+-------------+-----------+-------------+
| www.google.com | 2018-01-01 00:00:00' | 2 | 2 | 1
| www.facebook.com | 2014-01-05 00:00:00' | 2 | 0 | 1
| www.twitter.com | 2016-02-01 00:00:00' | 1 | 1 | 0
+---------------------+----------------------+-------------+-----------+-------------+
所以 30 天的间隔从 min(date) 开始,如间隔 1 所示,每 30 天计算一次。
我看过其他问题,例如:
Group rows by 7 days interval starting from a certain date
MySQL query to select min datetime grouped by 30 day intervals
但是它似乎没有回答我的具体问题。
我还研究了枢轴语法,但注意到它仅支持某些 DBMS。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
您是否希望根据找到的 30 天间隔获得可变数量的列?
标签: sql google-bigquery google-query-language