select _wstart as id, sum(data) as data from unique_key_data_template WHERE mqtt_sensor_id = 4102 and id <= '2023-09-30 23:59:59.999' and id >= '2023-07-01 00:00:00.0' PARTITION BY TBNAME interval(91d) FILL(VALUE,0); id | data | ============================================================ 2023-04-27 00:00:00.000000000 | 2871.246000000 | 2023-07-27 00:00:00.000000000 | 0.000000000 | Query OK, 2 row(s) in set (0.007935s) 为什么会输出两条结果
时间: 2023-08-23 09:04:08 浏览: 29
根据你提供的查询结果,返回了两条记录。是因为你的查询语句中使用了分区(PARTITION BY)和填充(FILL)操作。
首先,你的查询语句使用了分区操作,将数据按照TBNAME进行分组。这意味着查询结果将按照TBNAME的不同值进行分割。
其次,你使用了填充操作,通过填充值0来填补缺失的数据。在指定的时间范围内,如果某个分区中没有满足条件的记录,则会添加一条数据,其data值为0。
因此,根据你提供的查询结果,第一条记录是满足条件的实际数据,而第二条记录是填充数据,用来表示在该时间范围内没有满足条件的数据。
相关问题
flink sql 可以写定时器吗,并举例
可以写定时器。例如,可以使用Flink SQL中的TIMESTAMPADD函数来实现定时器功能,如下所示:
SELECT TUMBLE_START(rowtime, INTERVAL '1' HOUR) AS wStart, COUNT(*) AS cnt
FROM myTable
GROUP BY TUMBLE(rowtime, INTERVAL '1' HOUR), TIMESTAMPADD(HOUR, 1, TUMBLE_START(rowtime, INTERVAL '1' HOUR))
这个查询将在每个小时的开始时触发一个定时器,然后计算在该小时内的数据行数。