如果no.of冻结/重复Date_time,如何在Date_time列中使空白/缺失

时间:2017-05-03 05:30:50

标签: mysql

如果no.of冻结/重复Date_time等于时间序列中之前正确的Date_time和下一个正确的Date_time之间的所需Date_time记录的数量,则如何在Date_time列中使空白/缺失(ROW_ID:5,6,12 ,13) - 用缺少的Date_time替换冻结的Date_time并保留记录。

我们有15分钟间隔的数据 INPUT:

Row_id  Name    Date_time   Value
1   US  01-Nov-16 04:15:00  12
2   US  01-Nov-16 04:30:00  15
3   US  01-Nov-16 04:45:00  17
4   US  01-Nov-16 05:00:00  19

5   US  01-Nov-16 05:15:00  21
6   US  01-Nov-16 05:15:00  23

7   US  01-Nov-16 05:45:00  25

8   UK  06-Dec-16 09:15:00  27
9   UK  06-Dec-16 09:30:00  29
10  UK  06-Dec-16 09:45:00  31
11  UK  06-Dec-16 10:00:00  33

12  UK  06-Dec-16 10:15:00  35
13  UK  06-Dec-16 10:15:00  37

14  UK  06-Dec-16 10:45:00  39

输出:

Row_id  Name    Date_time   Value
1   US  01-Nov-16 04:15:00  12
2   US  01-Nov-16 04:30:00  15
3   US  01-Nov-16 04:45:00  17
4   US  01-Nov-16 05:00:00  19

5   US                      21
6   US                      23

7   US  01-Nov-16 05:45:00  25

8   UK  06-Dec-16 09:15:00  27
9   UK  06-Dec-16 09:30:00  29
10  UK  06-Dec-16 09:45:00  31
11  UK  06-Dec-16 10:00:00  33

12  UK                      35
13  UK                      37

14  UK  06-Dec-16 10:45:00  39

我尝试使用以下代码获取输出

将表格DS2创建为

SELECT date_timevaluename,COUNT() - 2 FROM( SELECT date_timevaluename,rn - seq AS grp FROM(   选择date_timevaluename,          @rn:= @rn + 1 AS rn,          @seq:= IF(@name = name和@val = date_time,@ seq + 1,1)AS seq,          @name:= name,          @val:= date_time   来自DS1   CROSS JOIN(SELECT @rn:= 0,@ seq:= 0,@ name ='',@ val = 0)AS vars   ORDER BY date)AS t)AS   GROUP BY date_timename,grp   有计数()> 2 ;

提前致谢。

0 个答案:

没有答案