繁体   English   中英

在SQL中创建时间范围

[英]Creating a Time Range in SQL

我想在Hive中创建一个包含三列的表(表A)。 该表的时间从5AM开始到第二天2AM结束。 每行比上一行增加5分钟。

前两列是这个(我不知道如何生成它)。

start_time | end_time
  5:00:00  |  5:05:00
  5:05:01  |  5:10:00
 ... 
 23:55:01  | 00:00:00
 ... 
  1:55:01  | 02:00:00 

有谁知道如何做以上?

摆脱一些背景:

创建表A后,我想使用另一个具有时代性的表(表B)代表每个客户拜访的记录,提取必要的时/分/秒信息,然后提供总和表A第三列中每个时间间隔的访问者计数,例如“ customer_count”。

我想我知道要为表A的“ customer_count”列进行计算,但是,我需要帮助的是在表A中创建前两列。

您可以采用另一种方法:

  1. 从表B中裁剪您感兴趣的日期
  2. 以5分钟为增量进行分组(假设纪元以秒为单位,则由(time-start_time) / 60 / 5计算)
  3. 然后将增量重新转换为日期并计算第二个end_time

像这样:

select from_unixtime(<start time> + period*60*5),
        from_unixtime(<start time> + (period+1)*60*5),
        count from
  (select (time-<start time>)/(60*5) as period,count(*) as count from tableB 
    where time >= <start time> and time <= <end time> 
    group by (time-<start time>)/(60*5) ) inner

请注意,您不会收到零计数的时间(一段时间内无访问次数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM