2016-07-20 178 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