2016-07-20 123 views
0

产生二次抽样鉴于目前我有一个生成该数据的视图:无法弄清楚如何在MySQL

ps_id min      max 
5017 2016-07-18 22:28:25  2016-07-19 06:23:17 
5018 2016-07-18 18:29:06  2016-07-18 18:40:05 
5019 2016-07-18 23:31:21  2016-07-19 00:10:07 

我试图创建应做到以下几点的看法。它应该对上面给定的ps_id采用“min”值,并且它应该找到小时的顶部。从第一行取分以上,例如:

2016-07-18 22:28:25 --> 2016-07-18 22:00:00 

同样的事情应该发生在第一行中,从上面的“最大”值:

2016-07-19 06:23:17 --> 2016-07-19 06:00:00 

然后,我需要的视图生成填充所生成的“最小”和“最大”值之间的所有间隙的子系列,其在这种情况下将产生小时之间的所有小时的顶部:

2016-07-18 22:00:00 

a第二小时的“最大”顶:

2016-07-19 06:00:00 

在这一切结束后,我需要的视图生成这个每个ps_id,它应该是这样的:

ps_id   hour_segment 
5017   2016-07-18 22:00:00 
5017   2016-07-18 23:00:00 
5017   2016-07-19 00:00:00 
5017   2016-07-19 01:00:00 
5017   2016-07-19 02:00:00 
5017   2016-07-19 03:00:00 
5017   2016-07-19 04:00:00 
5017   2016-07-19 05:00:00 
5017   2016-07-19 06:00:00 
5018   2016-07-18 18:00:00 
5019   2016-07-18 23:00:00 
5019   2016-07-19 00:00:00 

我一直在对付这个问题太久了,真的需要一些聪明的人,他们知道他们在MySQL中做了些什么来提供一些见解。

帮助!

+0

结果与样本数据有什么关系?你如何得到时间值? –

回答

0

从你的描述,这听起来像一个简单的group by

create view v_table as 
    select ps_id, min(hour_segment) as `min`, max(hour_segment) as `max` 
    from t 
    group by ps_id; 

但是,这不会产生在你的问题的结果。目前还不清楚样本数据与期望结果之间的关系。

+0

是的,我可以看到从我原来的帖子看来,情况似乎如此。不幸的是,这并不像你所建议的那么简单。我已更新它以更好地反映我正在尝试做的事情。 – Jonathan