如果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_time
,value
,name
,COUNT() - 2
FROM(
SELECT date_time
,value
,name
,rn - seq AS grp
FROM(
选择date_time
,value
,name
,
@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_time
,name
,grp
有计数()> 2
;
提前致谢。