HAVING booleanExpression
用于在数据分组聚合(GROUP BY)完成后,对聚合结果进行筛选。
HAVING子句与WHERE子句相同,WHERE子句在分组聚合之前对数据进行过滤,HAVING子句是对分组聚合后的结果进行过滤。在示例数据页面中,包含了用于构建表结构和插入数据的SQL语句,下载并在IoTDB CLI中执行这些语句,即可将数据导入IoTDB,您可以使用这些数据来测试和执行示例中的SQL语句,并获得相应的结果。
查询将计算 table1 表中每个 device_id 的条目数,并过滤掉那些计数低于 5 的设备。
SELECT device_id, COUNT(*) FROM table1 GROUP BY device_id HAVING COUNT(*) >= 5;
执行结果如下:
+---------+-----+ |device_id|_col1| +---------+-----+ | 100| 8| | 101| 10| +---------+-----+ Total line number = 2 It costs 0.063s
查询将计算 table1 表中每个设备每小时的平均温度,并过滤掉那些平均温度低于 85.0 的设备。
SELECT date_bin(1h, time) as hour_time, device_id, AVG(temperature) as avg_temp FROM table1 GROUP BY date_bin(1h, time), device_id HAVING AVG(temperature) >= 85.0;
执行结果如下:
+-----------------------------+---------+--------+ | hour_time|device_id|avg_temp| +-----------------------------+---------+--------+ |2024-11-29T18:00:00.000+08:00| 100| 90.0| |2024-11-28T08:00:00.000+08:00| 100| 85.0| |2024-11-28T10:00:00.000+08:00| 100| 85.0| |2024-11-28T11:00:00.000+08:00| 100| 88.0| |2024-11-26T13:00:00.000+08:00| 100| 90.0| |2024-11-30T09:00:00.000+08:00| 101| 90.0| |2024-11-30T14:00:00.000+08:00| 101| 90.0| |2024-11-29T10:00:00.000+08:00| 101| 85.0| |2024-11-27T16:00:00.000+08:00| 101| 85.0| +-----------------------------+---------+--------+ Total line number = 9 It costs 0.079s