SQL函数

聚合函数

TDengine支持针对数据的聚合查询。提供支持的聚合和选择函数如下:

  • COUNT

    1. SELECT COUNT([*|field_name]) FROM tb_name [WHERE clause]

    功能说明:统计表/超级表中记录行数或某列的非空值个数。
    返回结果数据类型:长整型INT64。
    应用字段:应用全部字段。
    适用于:表、超级表。
    说明:1)可以使用星号来替代具体的字段,使用星号()返回全部记录数量。2)针对同一表的(不包含NULL值)字段查询结果均相同。3)如果统计对象是具体的列,则返回该列中非NULL值的记录数量。

  • AVG

    1. SELECT AVG(field_name) FROM tb_name [WHERE clause]

    功能说明:统计表/超级表中某列的平均值。
    返回结果数据类型:双精度浮点数Double。
    应用字段:不能应用在timestamp、binary、nchar、bool字段。
    适用于:表、超级表。

  • TWA

    1. SELECT TWA(field_name) FROM tb_name WHERE clause

    功能说明:时间加权平均函数。统计表/超级表中某列在一段时间内的时间加权平均。
    返回结果数据类型:双精度浮点数Double。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。 说明:时间加权平均(time weighted average, TWA)查询需要指定查询时间段的 开始时间结束时间 。 适用于:表、超级表。

  • SUM

    1. SELECT SUM(field_name) FROM tb_name [WHERE clause]

    功能说明:统计表/超级表中某列的和。
    返回结果数据类型:双精度浮点数Double和长整型INT64。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    适用于:表、超级表。

  • STDDEV

    1. SELECT STDDEV(field_name) FROM tb_name [WHERE clause]

    功能说明:统计表中某列的均方差。
    返回结果数据类型:双精度浮点数Double。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    适用于:表。

  • LEASTSQUARES

    1. SELECT LEASTSQUARES(field_name) FROM tb_name [WHERE clause]

    功能说明:统计表中某列的值是主键(时间戳)的拟合直线方程。
    返回结果数据类型:字符串表达式(斜率, 截距)。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:自变量是时间戳,因变量是该列的值。
    适用于:表。

选择函数

  • MIN

    1. SELECT MIN(field_name) FROM {tb_name | stb_name} [WHERE clause]

    功能说明:统计表/超级表中某列的值最小值。
    返回结果数据类型:同应用的字段。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。

  • MAX

    1. SELECT MAX(field_name) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列的值最大值。
    返回结果数据类型:同应用的字段。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。

  • FIRST

    1. SELECT FIRST(field_name) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列的值最先写入的非NULL值。
    返回结果数据类型:同应用的字段。
    应用字段:所有字段。
    说明:1)如果要返回各个列的首个(时间戳最小)非NULL值,可以使用FIRST(*);2) 如果结果集中的某列全部为NULL值,则该列的返回结果也是NULL;3) 如果结果集中所有列全部为NULL值,则不返回结果。

  • LAST

    1. SELECT LAST(field_name) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列的值最后写入的非NULL值。
    返回结果数据类型:同应用的字段。
    应用字段:所有字段。
    说明:1)如果要返回各个列的最后(时间戳最大)一个非NULL值,可以使用LAST(*);2)如果结果集中的某列全部为NULL值,则该列的返回结果也是NULL;如果结果集中所有列全部为NULL值,则不返回结果。

  • TOP

    1. SELECT TOP(field_name, K) FROM { tb_name | stb_name } [WHERE clause]

    功能说明: 统计表/超级表中某列的值最大k个非NULL值。若多于k个列值并列最大,则返回时间戳小的。
    返回结果数据类型:同应用的字段。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:1)k值取值范围1≤k≤100;2)系统同时返回该记录关联的时间戳列。

  • BOTTOM

    1. SELECT BOTTOM(field_name, K) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列的值最小k个非NULL值。若多于k个列值并列最小,则返回时间戳小的。
    返回结果数据类型:同应用的字段。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:1)k值取值范围1≤k≤100;2)系统同时返回该记录关联的时间戳列。

  • PERCENTILE

    1. SELECT PERCENTILE(field_name, P) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表中某列的值百分比分位数。
    返回结果数据类型: 双精度浮点数Double。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:k值取值范围0≤k≤100,为0的时候等同于MIN,为100的时候等同于MAX。

  • APERCENTILE

    1. SELECT APERCENTILE(field_name, P) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表中某列的值百分比分位数,与PERCENTILE函数相似,但是返回近似结果。
    返回结果数据类型: 双精度浮点数Double。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:k值取值范围0≤k≤100,为0的时候等同于MIN,为100的时候等同于MAX。推荐使用APERCENTILE函数,该函数性能远胜于PERCENTILE函数

  • LAST_ROW mysql SELECT LAST_ROW(field_name) FROM { tb_name | stb_name } 功能说明:返回表(超级表)的最后一条记录。
    返回结果数据类型:同应用的字段。
    应用字段:所有字段。
    说明:与last函数不同,last_row不支持时间范围限制,强制返回最后一条记录。

计算函数

  • DIFF

    1. SELECT DIFF(field_name) FROM tb_name [WHERE clause]

    功能说明:统计表中某列的值与前一行对应值的差。
    返回结果数据类型: 同应用字段。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:输出结果行数是范围内总行数减一,第一行没有结果输出。

  • SPREAD

    1. SELECT SPREAD(field_name) FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列的最大值和最小值之差。
    返回结果数据类型: 双精度浮点数。
    应用字段:不能应用在binary、nchar、bool类型字段。
    说明:可用于TIMESTAMP字段,此时表示记录的时间覆盖范围。

  • 四则运算

    1. SELECT field_name [+|-|*|/|%][Value|field_name] FROM { tb_name | stb_name } [WHERE clause]

    功能说明:统计表/超级表中某列或多列间的值加、减、乘、除、取余计算结果。
    返回结果数据类型:双精度浮点数。
    应用字段:不能应用在timestamp、binary、nchar、bool类型字段。
    说明:1)支持两列或多列之间进行计算,可使用括号控制计算优先级;2)NULL字段不参与计算,如果参与计算的某行中包含NULL,该行的计算结果为NULL。