TDengine 聚合函数 STDDEV 用户手册_sql

STDDEV 函数用户手册

1. 函数简介

STDDEV 是 TDengine 的聚合函数,用于计算某一数值字段的标准差,衡量数据波动性。适用于电流、电压、功率等时序数据的波动分析。


2. 语法说明

SELECT STDDEV(column_name) FROM meters [WHERE condition];
-- 或用于窗口聚合
SELECT STDDEV(column_name) FROM meters [WHERE condition] INTERVAL(window_size);
  • column_name:需要计算标准差的字段,必须为数值类型。
  • meters:智能电表超级表名。
  • condition:可选,筛选数据的条件。
  • window_size:如 1h1d,窗口聚合单位。

3. 参数说明

  • 支持数据类型:TINYINTSMALLINTINTBIGINTFLOATDOUBLE 等。
  • NULL 值自动忽略。
  • 支持窗口聚合(INTERVAL),不支持与 GROUP BY 同时使用。

4. 返回值

  • 返回 DOUBLE 类型的标准差。
  • 无有效数据时返回 NULL。

5. 智能电表场景使用示例

场景一:每小时电流波动分析

SELECT STDDEV(current) AS current_stddev
FROM meters
WHERE location = 'California.SanFrancisco'
  AND ts >= NOW - 1d
INTERVAL(1h);

说明:统计过去一天每小时的电流标准差,分析用电波动。


场景二:单设备电压波动分析

SELECT STDDEV(voltage) AS voltage_stddev
FROM meters
WHERE tbname = 'd1001'
  AND ts >= NOW - 7d;

说明:统计某台电表一周内的电压波动情况。


场景三:分区统计各设备电流波动

SELECT tbname, STDDEV(current) AS current_stddev
FROM meters
WHERE location = 'California.LosAngles'
  AND ts >= NOW - 1d
PARTITION BY tbname;

说明:统计每台设备过去一天的电流标准差,便于对比设备运行稳定性。


场景四:检测异常用电行为

SELECT STDDEV(current) AS current_stddev
FROM meters
WHERE tbname = 'd1002'
  AND ts >= '2024-09-01 00:00:00' AND ts < '2024-09-02 00:00:00';

说明:统计某设备某天的电流标准差,标准差异常增大可能说明用电异常或设备故障。


场景五:窗口聚合分析电压波动

SELECT STDDEV(voltage) AS voltage_stddev
FROM meters
WHERE location = 'California.Cupertino'
  AND ts >= NOW - 1d
INTERVAL(30m);

说明:每 30 分钟统计一次电压标准差,监控电压质量。


6. 注意事项

  • 仅支持数值型字段。
  • 对于大数据量,建议加时间过滤提升性能。

通过合理使用 STDDEV 函数,可以高效分析智能电表数据的波动性,辅助用电异常检测、设备健康评估和电网质量监控。