文章目录

  • 聚合类函数
    • count () 函数
    • distinct () 函数
    • mean() 函数
    • median() 函数
    • spread() 函数
    • sum() 函数
  • 选择类函数
    • top () 函数
    • bottom() 函数
    • first() 函数
    • last() 函数
    • max() 函数
    • min() 函数
    • percentile() 函数
  • 变换类函数
    • derivative() 函数
    • difference () 函数
    • elapsed() 函数
    • moving_average() 函数
    • non_negative_derivative() 函数
    • stddev() 函数

聚合类函数

count () 函数

返回一个(field)字段中的非空值的数量。

语法:

SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

实例:

select count("pH") from h2o_pH


说明 pH 这个字段在 h2o_pH 表中共有 15258 条数据

可以再 where 中加入时间条件,如下:

select count("pH") from h2o_pH where time >='2019-08-17T00:00:00Z' AND time < '2019-09-17T17:00:00Z' GROUP BY time(4d)

distinct () 函数

返回一个字段的唯一值

语法:

SELECT DISTINCT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select distinct("level description") from h2o_feet

mean() 函数

返回一个字段中的值得平均值。这些字段必须是长整型或 float 类型

语法:

SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select mean("water_level") from h2o_feet

median() 函数

从单个字段中的排序值返回中间值(中位数)。字段值的类型必须是长整型或 float 类型

语法:

SELECT median(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select median("water_level") from h2o_feet

spread() 函数

返回字段值得最小值与最大值之间的差值。字段值的类型必须是长整型或 float 类型

语法:

SELECT spread(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select spread("water_level") from h2o_feet

sum() 函数

返回字段中所有值总和。字段值的类型必须是长整型或 float 类型

语法:

SELECT sum(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select sum("water_level") from h2o_feet

选择类函数

top () 函数

返回一个字段中最大的 N 个值,字段必须是长整型或 float 类型

语法:

SELECT TOP( <field_key>[,<tag_key(s)>],<N> )[,<tag_key(s)>|<field_key(s)>] [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

示例:

select top("water_level",3) from h2o_feet

bottom() 函数

返回一个字段中最小的 N 个值,字段必须是长整型或 float 类型

语法:

SELECT BUTTOM( <field_key>[,<tag_key(s)>],<N> )[,<tag_key(s)>|<field_key(s)>] [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

示例:

select bottom("water_level",3) from h2o_feet


也可将关联tag放在一起查询,但如果tag值少于N的值,则返回的值的个数只会取tag中字段值少的那个。

select bottom("water_level","location",3) from h2o_feet


语句取最小的三个值,然而结果只返回了2个值,因为 location 这个tag只有 两个取值。

first() 函数

返回一个字段中最老的取值

语法:

SELECT FIRST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select first("water_level") from h2o_feet where location = 'santa_monica'

last() 函数

返回一个字段中最新的取值

语法:

SELECT LAST(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select last("water_level"),location from h2o_feet where time >= '2019-08-17T00:42:00Z' and time <= '2019-09-17T00:54:00Z'

max() 函数

返回一个字段中最大的值,字段必须是长整型或 float 类型

语法:

SELECT MAX(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select MAX("water_level"),location from h2o_feet

min() 函数

返回一个字段中最小的值,字段必须是长整型或 float 类型

语法:

SELECT MIN(<field_key>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select min("water_level"),location from h2o_feet

percentile() 函数

返回排序值排位为N的百分值,字段必须是长整型或 float 类型

百分值是介于100到0之间的整数或浮点数,包括100。

语法:

SELECT PERCENTILE(<field_key>, <N>)[,<tag_key(s)>] FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select percentile("water_level",5),location from h2o_feet


就是将water_level字段按照不同的location求百分比,然后取第五位数据。

变换类函数

derivative() 函数

返回一个字段在一个series中的变化率。

InfluxDB会计算按照时间进行排序的字段值之间的差异,并将这些结果转化为单位变化率。其中,单位可以指定,默认为1s。

语法:

SELECT DERIVATIVE(<field_key>, [<unit>]) FROM <measurement_name> [WHERE <stuff>]

其中,unit取值可以为以下几种:

u :microseconds
s :seconds
m :minutes
h :hours
d :days
w :weeks

DERIVATIVE()函数还可以在GROUP BY time()的条件下与聚合函数嵌套使用,格式如下:

SELECT DERIVATIVE(AGGREGATION_FUNCTION(<field_key>),[<unit>]) FROM <measurement_name> WHERE <stuff> GROUP BY time(<aggregation_interval>)

示例:

部分数据:

select derivative("water_level")from h2o_feet where location='santa_monica' limit 5


第一行数据的计算公式为(2.116 - 2.064) / (360s / 1s)

计算每 6 分钟的变化率

select derivative("water_level",6m)from h2o_feet where location='santa_monica' limit 5


第一行数据的计算过程如下:(2.116 - 2.064) / (6m / 6m)

计算每12分钟的变化率:

select derivative("water_level",12m)from h2o_feet where location='santa_monica' limit 5


第一行数据计算过程为:(2.116 - 2.064 / (6m / 12m)

计算每12分钟最大值的变化率

 SELECT derivative(MAX(water_level)) FROM h2o_feet WHERE location='santa_monica' AND time >= '2019-08-17T00:00:00Z' AND time < '2019-08-18T00:36:00Z' GROUP BY time(12m)

difference () 函数

返回一个字段中连续的时间值之间的差异。字段类型必须是长整型或f loat 类型

语法:

SELECT DIFFERENCE(<field_key>) FROM <measurement_name> [WHERE <stuff>]

与GROUP BY time()以及其他嵌套函数一起使用的语法格式:

SELECT DIFFERENCE(<function>(<field_key>)) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)

其中,函数可以包含以下几个:

COUNT(), MEAN(), MEDIAN(),SUM(), FIRST(), LAST(), MIN(), MAX(), 和 PERCENTILE()。

示例:

示例中使用的源数据

计算water_level间的差异:

select difference(water_level) from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' AND time < '2019-08-17T00:36:00Z'

elapsed() 函数

返回一个字段在连续的时间间隔间的差异,间隔单位可选,默认为1纳秒。

语法:

SELECT ELAPSED(<field_key>, <unit>) FROM <measurement_name> [WHERE <stuff>]

示例:

计算h2o_feet字段在纳秒间隔下的差异。

select elapsed(water_level) from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' and time < '2019-08-17T00:24:00Z'


在一分钟间隔下的差异率:

select elapsed(water_level,1m) from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' and time < '2019-08-17T00:24:00Z'


注意:如果设置的时间间隔比字段数据间的时间间隔更大时,则函数会返回0,如下所示:

moving_average() 函数

返回一个连续字段值的移动平均值,字段类型必须是长整型或者 float 类型

语法:

SELECT MOVING_AVERAGE(<field_key>,<window>) FROM <measurement_name> [WHERE <stuff>]

与其他函数和GROUP BY time()语句一起使用时的语法

SELECT MOVING_AVERAGE(<function>(<field_key>),<window>) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)

此函数可以和以下函数一起使用:

COUNT(), MEAN(),MEDIAN(), SUM(), FIRST(), LAST(), MIN(), MAX(), and PERCENTILE().

示例:

示例中的源数据

select water_level from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' and time < '2019-08-17T00:36:00Z'


计算平均移动在每两个字段

select moving_average(water_level,2) from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' and time < '2019-08-17T00:36:00Z'

移动平均线列中的第一个值的平均值是2.064和2.116,第二个移动平均线列中的值是2.116和2.028的平均水平。

每隔12分钟选择最低值water_level和计算移动平均每2字段值:

select moving_average(min(water_level),2) from h2o_feet where location='santa_monica' and time >= '2019-08-17T00:00:00Z' and time < '2019-08-17T00:36:00Z' order by time(12m)

这些结果,InfluxDB首先选择MIN() water_level每12分钟间隔:

non_negative_derivative() 函数

返回在一个series中的一个字段中值的变化的非负速率。

语法:

SELECT NON_NEGATIVE_DERIVATIVE(<field_key>, [<unit>]) FROM <measurement_name> [WHERE <stuff>]

InfluxDB计算连续字段值之间的差异和转换的结果为每单位变化率。
单位参数是可选的,如果没有指定,则默认为1秒(1s)。

non_negative_derivative()也可以与嵌套函数a GROUP BY time()一起使用。

查询包含这些选项,InfluxDB首先进行聚合,选择,或转型通过时间间隔函数group by time()。

然后计算时间字段值之间的差异,并将这些结果转换为每单位的变化率。

与聚合类函数放在一起使用时的语法如下所示:

SELECT NON_NEGATIVE_DERIVATIVE(AGGREGATION_FUNCTION(<field_key>),[<unit>]) FROM <measurement_name> WHERE <stuff> GROUP BY time(<aggregation_interval>)

可以参考derivative()的查询例子。derivative()和non_negative_derivative所有的查询结果是相同的除了non_negative_derivative()只返回正数。

stddev() 函数

返回一个字段中的值的标准偏差。字段类型必须是长整型或者 float 类型

语法:

SELECT STDDEV(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

示例:

select stddev(water_level) from h2o_feet


计算water_level在一个星期时间间隔和location 标签,2019年8月18日的午夜2019年9月18日中午之间标准偏差。

SELECT STDDEV(water_level) FROM h2o_feet WHERE time >= '2019-08-17T00:00:00Z' and time < '2019-09-18T12:06:00Z' GROUP BY time(1w), location

InfluxDB 函数相关推荐

  1. influxdb聚合函数JAVA_InfluxDB 聚合函数实用案例

    文章大纲 InfluxDB 简介 InfluxDB是GO语言编写的分布式时间序列化数据库,非常适合对数据(跟随时间变化而变化的数据)的跟踪.监控和分析.在我们的项目中,主要是用来收集设备实时上传的值. ...

  2. influxDB 常用聚合函数整理

    1)count()函数 返回一个(field)字段中的非空值的数量. 语法: SELECT COUNT(<field_key>) FROM <measurement_name> ...

  3. Flux脚本语言基础使用-函数定义(InFluxDB 查询语言)

    函数 函数语法 自定义函数: 转换函数 (<-) 定义具有作用域的函数 函数语法 语法: 函数名 = (参数) => 函数体 自定义函数: 一个参数的函数 square = (n) =&g ...

  4. 【大数据】InfluxDB的常用查询及常用函数

    通过上篇博客,我们已经简单认识了InfluxDB了,其实在实际使用中,我们最常用的就是查询了,这篇博客就详细了解下InfluxDB的查询操作 一.常用查询 1.从单个measurement查询所有的f ...

  5. influxdb的percentile函数

    官方文档的说明并不详细 https://jasper-zhang1.gitbooks.io/influxdb/content/Query_language/functions.html 实际百分位取第 ...

  6. InfluxDB常用函数

    常用函数 聚合类 1.COUNT() :返回一个field中的非空值数量 2.MEAN() 函数:求平均值,字段类型必须是整型或浮点型 3.SPREAD()函数:返回字段的最小值和最大值的差值,字段类 ...

  7. 如何将 Spring Boot Actuator 的指标信息输出到 InfluxDB 和 Prometheus

    来源:SpringForAll社区 Spring Boot Actuator是Spring Boot 2发布后修改最多的项目之一.它经过了主要的改进,旨在简化定制,并包括一些新功能,如支持其他Web技 ...

  8. 深入浅出时序数据库之预处理篇——批处理和流处理,用户可定制,但目前流行influxdb没有做...

    时序数据是一个写多读少的场景,对时序数据库以及数据存储方面做了论述,数据查询和聚合运算同样是时序数据库必不可少的功能之一.如何支持在秒级对上亿数据的查询分组聚合运算成为了时序数据库产品必须要面对的挑战 ...

  9. python使用说明书-InfluxDB——python使用手册

    InfluxDB--python使用手册 准备工作 安装InfluxDB: 安装pip : yum install python-pip 安装influxdb-python : pip install ...

最新文章

  1. 图解c/c++多级指针与“多维”数组
  2. C语言之结构体以及结构体对齐访问
  3. Android自定义View的实现方法,带你一步步深入了解View
  4. 12.1简介Object类
  5. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
  6. 图综合练习--拓扑排序_拓扑排序
  7. 【计算机组成原理】磁盘存储器
  8. csv是python内置模块吗_Python--CSV模块 - 一只小小的寄居蟹 - 博客园
  9. 软件测试常见断言,5.6 postman 常用的断言
  10. Ubuntu 64-bit下搭建 Apache 2、PHP5、MySQL、GO Web服务器
  11. php zip扩展文件,php使用ZipArchive扩展实现文件的zip压缩与zip解压
  12. 从0开始Windows Mobile 开发
  13. 微信小程序内无法播放第三方服务器上的视频资源
  14. 中国移动 云MAS平台HTTP2.1(HTTP版)发送普通短信
  15. Revit SDK 介绍:API Sketched Winder Stairs 创建扇形踏步楼梯
  16. 固态硬盘有哪些协议知识点?
  17. 如何使用Elasticsearch构建强大的搜索和分析应用程序(2023年最新ES新手教程)
  18. 国资委79号文解读:国央企OA办公系统信创替代落地实践与标杆案例
  19. python求所有参数的乘积_python 通过可变参数计算n个数的乘积方法
  20. Gate用户手册(二)怎样运行Gate以及可视化

热门文章

  1. 2019人力资源管理师考试成绩查询发布信息(一周汇总)
  2. 推荐一款 颜值爆表的主题终端 (windows )
  3. java基础:基本类型
  4. Java知识点总结【3】类和对象
  5. 【C4D周练作业071-080】微软的毛玻璃效果
  6. 正则表达式:用户名只允许字母、数字、下划线组成,首位只能为字母(6-16字符)
  7. java settext 用不了_java jTextField的settext()方法无效
  8. ibm服务器维修 代码ed,IBM服务器安装全过程
  9. 西南证券一直显示切换服务器,西南证券:近期一直在做平台,后续突破概率较大...
  10. android车机手机黑屏闪黑终结者-Winscope工具使用介绍