blob: f41aee987003c3b0ad0d25dcf411dc9804f86d9f [file] [log] [blame]
import{_ as i,c as o,b as p,d as s,e as a,a as l,w as t,r,o as u}from"./app-Bhq43HqP.js";const d={};function c(k,n){const e=r("RouteLink");return u(),o("div",null,[n[61]||(n[61]=p(`<h1 id="概述" tabindex="-1"><a class="header-anchor" href="#概述"><span>概述</span></a></h1><p>在 IoTDB 中,使用 <code>SELECT</code> 语句从一条或多条时间序列中查询数据。</p><h2 id="语法定义" tabindex="-1"><a class="header-anchor" href="#语法定义"><span>语法定义</span></a></h2><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">SELECT</span> <span class="token punctuation">[</span><span class="token keyword">LAST</span><span class="token punctuation">]</span> selectExpr <span class="token punctuation">[</span><span class="token punctuation">,</span> selectExpr<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">INTO</span> intoItem <span class="token punctuation">[</span><span class="token punctuation">,</span> intoItem<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">]</span></span>
<span class="line"> <span class="token keyword">FROM</span> prefixPath <span class="token punctuation">[</span><span class="token punctuation">,</span> prefixPath<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">WHERE</span> whereCondition<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> {</span>
<span class="line"> <span class="token punctuation">(</span><span class="token punctuation">[</span>startTime<span class="token punctuation">,</span> endTime<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token keyword">interval</span> <span class="token punctuation">[</span><span class="token punctuation">,</span> slidingStep<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">|</span></span>
<span class="line"> <span class="token keyword">LEVEL</span> <span class="token operator">=</span> levelNum <span class="token punctuation">[</span><span class="token punctuation">,</span> levelNum<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token operator">|</span></span>
<span class="line"> TAGS<span class="token punctuation">(</span>tagKey <span class="token punctuation">[</span><span class="token punctuation">,</span> tagKey<span class="token punctuation">]</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token punctuation">)</span></span>
<span class="line"> }<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">HAVING</span> havingCondition<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> sortKey {<span class="token keyword">ASC</span> <span class="token operator">|</span> <span class="token keyword">DESC</span>}<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span>FILL <span class="token punctuation">(</span>{PREVIOUS <span class="token operator">|</span> LINEAR <span class="token operator">|</span> constant}<span class="token punctuation">)</span><span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span>SLIMIT seriesLimit<span class="token punctuation">]</span> <span class="token punctuation">[</span>SOFFSET seriesOffset<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span><span class="token keyword">LIMIT</span> rowLimit<span class="token punctuation">]</span> <span class="token punctuation">[</span><span class="token keyword">OFFSET</span> rowOffset<span class="token punctuation">]</span></span>
<span class="line"> <span class="token punctuation">[</span>ALIGN <span class="token keyword">BY</span> {<span class="token keyword">TIME</span> <span class="token operator">|</span> DEVICE}<span class="token punctuation">]</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="语法说明" tabindex="-1"><a class="header-anchor" href="#语法说明"><span>语法说明</span></a></h2><h3 id="select-子句" tabindex="-1"><a class="header-anchor" href="#select-子句"><span><code>SELECT</code> 子句</span></a></h3>`,6)),s("ul",null,[n[10]||(n[10]=s("li",null,[s("code",null,"SELECT"),a(" 子句指定查询的输出,由若干个 "),s("code",null,"selectExpr"),a(" 组成。")],-1)),n[11]||(n[11]=s("li",null,[a("每个 "),s("code",null,"selectExpr"),a(" 定义查询结果中的一列或多列,它是一个由时间序列路径后缀、常量、函数和运算符组成的表达式。")],-1)),n[12]||(n[12]=s("li",null,[a("支持使用"),s("code",null,"AS"),a("为查询结果集中的列指定别名。")],-1)),s("li",null,[n[1]||(n[1]=a("在 ")),n[2]||(n[2]=s("code",null,"SELECT",-1)),n[3]||(n[3]=a(" 子句中使用 ")),n[4]||(n[4]=s("code",null,"LAST",-1)),n[5]||(n[5]=a(" 关键词可以指定查询为最新点查询,详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Last-Query.html"},{default:t(()=>n[0]||(n[0]=[a("最新点查询")])),_:1}),n[6]||(n[6]=a(" "))]),s("li",null,[n[8]||(n[8]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Select-Expression.html"},{default:t(()=>n[7]||(n[7]=[a("选择表达式")])),_:1}),n[9]||(n[9]=a(" "))])]),n[62]||(n[62]=s("h3",{id:"into-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#into-子句"},[s("span",null,[s("code",null,"INTO"),a(" 子句")])])],-1)),s("ul",null,[n[16]||(n[16]=s("li",null,[s("code",null,"SELECT INTO"),a(" 用于将查询结果写入一系列指定的时间序列中。"),s("code",null,"INTO"),a(" 子句指定了查询结果写入的目标时间序列。")],-1)),s("li",null,[n[14]||(n[14]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Select-Into.html"},{default:t(()=>n[13]||(n[13]=[a("SELECT INTO(查询写回)")])),_:1}),n[15]||(n[15]=a(" "))])]),n[63]||(n[63]=p('<h3 id="from-子句" tabindex="-1"><a class="header-anchor" href="#from-子句"><span><code>FROM</code> 子句</span></a></h3><ul><li><code>FROM</code> 子句包含要查询的一个或多个时间序列的路径前缀,支持使用通配符。</li><li>在执行查询时,会将 <code>FROM</code> 子句中的路径前缀和 <code>SELECT</code> 子句中的后缀进行拼接得到完整的查询目标序列。</li></ul><h3 id="where-子句" tabindex="-1"><a class="header-anchor" href="#where-子句"><span><code>WHERE</code> 子句</span></a></h3>',3)),s("ul",null,[n[20]||(n[20]=s("li",null,[s("code",null,"WHERE"),a(" 子句指定了对数据行的筛选条件,由一个 "),s("code",null,"whereCondition"),a(" 组成。")],-1)),n[21]||(n[21]=s("li",null,[s("code",null,"whereCondition"),a(" 是一个逻辑表达式,对于要选择的每一行,其计算结果为真。如果没有 "),s("code",null,"WHERE"),a(" 子句,将选择所有行。")],-1)),n[22]||(n[22]=s("li",null,[a(" "),s("code",null,"whereCondition"),a(" 中,可以使用除聚合函数之外的任何 IOTDB 支持的函数和运算符。")],-1)),s("li",null,[n[18]||(n[18]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Where-Condition.html"},{default:t(()=>n[17]||(n[17]=[a("查询过滤条件")])),_:1}),n[19]||(n[19]=a(" "))])]),n[64]||(n[64]=s("h3",{id:"group-by-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#group-by-子句"},[s("span",null,[s("code",null,"GROUP BY"),a(" 子句")])])],-1)),s("ul",null,[n[26]||(n[26]=s("li",null,[s("code",null,"GROUP BY"),a(" 子句指定对序列进行分段或分组聚合的方式。")],-1)),n[27]||(n[27]=s("li",null,[a("分段聚合是指按照时间维度,针对同时间序列中不同数据点之间的时间关系,对数据在行的方向进行分段,每个段得到一个聚合值。目前仅支持"),s("strong",null,"按时间区间分段"),a(",未来将支持更多分段方式。")],-1)),n[28]||(n[28]=s("li",null,[a("分组聚合是指针对不同时间序列,在时间序列的潜在业务属性上分组,每个组包含若干条时间序列,每个组得到一个聚合值。支持"),s("strong",null,"按路径层级分组"),a(""),s("strong",null,"按序列标签分组"),a("两种分组方式。")],-1)),n[29]||(n[29]=s("li",null,"分段聚合和分组聚合可以混合使用。",-1)),s("li",null,[n[24]||(n[24]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Group-By.html"},{default:t(()=>n[23]||(n[23]=[a("分段分组聚合")])),_:1}),n[25]||(n[25]=a(" "))])]),n[65]||(n[65]=s("h3",{id:"having-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#having-子句"},[s("span",null,[s("code",null,"HAVING"),a(" 子句")])])],-1)),s("ul",null,[n[33]||(n[33]=p("<li><code>HAVING</code> 子句指定了对聚合结果的筛选条件,由一个 <code>havingCondition</code> 组成。</li><li><code>havingCondition</code> 是一个逻辑表达式,对于要选择的聚合结果,其计算结果为真。如果没有 <code>HAVING</code> 子句,将选择所有聚合结果。</li><li><code>HAVING</code> 要和聚合函数以及 <code>GROUP BY</code> 子句一起使用。</li>",3)),s("li",null,[n[31]||(n[31]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Having-Condition.html"},{default:t(()=>n[30]||(n[30]=[a("聚合结果过滤")])),_:1}),n[32]||(n[32]=a(" "))])]),n[66]||(n[66]=p('<h3 id="order-by-子句" tabindex="-1"><a class="header-anchor" href="#order-by-子句"><span><code>ORDER BY</code> 子句</span></a></h3><ul><li><code>ORDER BY</code> 子句用于指定结果集的排序方式。</li><li>按时间对齐模式下:默认按照时间戳大小升序排列,可以通过 <code>ORDER BY TIME DESC</code> 指定结果集按照时间戳大小降序排列。</li><li>按设备对齐模式下:先按照设备排列,每个设备内部按照时间戳大小升序排列,暂不支持使用 <code>ORDER BY</code> 子句。</li></ul><h3 id="fill-子句" tabindex="-1"><a class="header-anchor" href="#fill-子句"><span><code>FILL</code> 子句</span></a></h3>',3)),s("ul",null,[n[37]||(n[37]=s("li",null,[s("code",null,"FILL"),a(" 子句用于指定数据缺失情况下的填充模式,允许用户按照特定的方法对任何查询的结果集填充空值。")],-1)),s("li",null,[n[35]||(n[35]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Fill.html"},{default:t(()=>n[34]||(n[34]=[a("结果集补空值")])),_:1}),n[36]||(n[36]=a(" "))])]),n[67]||(n[67]=s("h3",{id:"slimit-和-soffset-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#slimit-和-soffset-子句"},[s("span",null,[s("code",null,"SLIMIT"),a(" "),s("code",null,"SOFFSET"),a(" 子句")])])],-1)),s("ul",null,[n[41]||(n[41]=s("li",null,[s("code",null,"SLIMIT"),a(" 指定查询结果的列数,"),s("code",null,"SOFFSET"),a(" 指定查询结果显示的起始列位置。"),s("code",null,"SLIMIT"),a(" "),s("code",null,"SOFFSET"),a(" 仅用于控制值列,对时间列和设备列无效。")],-1)),s("li",null,[n[39]||(n[39]=a("关于查询结果分页,详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Pagination.html"},{default:t(()=>n[38]||(n[38]=[a("结果集分页")])),_:1}),n[40]||(n[40]=a(" "))])]),n[68]||(n[68]=s("h3",{id:"limit-和-offset-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#limit-和-offset-子句"},[s("span",null,[s("code",null,"LIMIT"),a(" "),s("code",null,"OFFSET"),a(" 子句")])])],-1)),s("ul",null,[n[45]||(n[45]=s("li",null,[s("code",null,"LIMIT"),a(" 指定查询结果的行数,"),s("code",null,"OFFSET"),a(" 指定查询结果显示的起始行位置。")],-1)),s("li",null,[n[43]||(n[43]=a("关于查询结果分页,详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Pagination.html"},{default:t(()=>n[42]||(n[42]=[a("结果集分页")])),_:1}),n[44]||(n[44]=a(" "))])]),n[69]||(n[69]=s("h3",{id:"align-by-子句",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#align-by-子句"},[s("span",null,[s("code",null,"ALIGN BY"),a(" 子句")])])],-1)),s("ul",null,[n[49]||(n[49]=s("li",null,[a("查询结果集默认"),s("strong",null,"按时间对齐"),a(",包含一列时间列和若干个值列,每一行数据各列的时间戳相同。")],-1)),n[50]||(n[50]=s("li",null,[a("除按时间对齐之外,还支持"),s("strong",null,"按设备对齐"),a(",查询结果集包含一列时间列、一列设备列和若干个值列。")],-1)),s("li",null,[n[47]||(n[47]=a("详细说明及示例见文档 ")),l(e,{to:"/zh/UserGuide/V1.0.x/Query-Data/Align-By.html"},{default:t(()=>n[46]||(n[46]=[a("查询对齐模式")])),_:1}),n[48]||(n[48]=a(" "))])]),n[70]||(n[70]=p(`<h2 id="sql-示例" tabindex="-1"><a class="header-anchor" href="#sql-示例"><span>SQL 示例</span></a></h2><h3 id="示例1-根据一个时间区间选择一列数据" tabindex="-1"><a class="header-anchor" href="#示例1-根据一个时间区间选择一列数据"><span>示例1:根据一个时间区间选择一列数据</span></a></h3><p>SQL 语句为:</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">select</span> temperature <span class="token keyword">from</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01 <span class="token keyword">where</span> <span class="token keyword">time</span> <span class="token operator">&lt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">08</span>:<span class="token number">00.000</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>其含义为:</p><p>被选择的设备为 ln 集团 wf01 子站 wt01 设备;被选择的时间序列为温度传感器(temperature);该语句要求选择出该设备在 “2017-11-01T00:08:00.000” 时间点以前的所有温度传感器的值。</p><p>该 SQL 语句的执行结果如下:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+-----------------------------+-----------------------------+</span>
<span class="line">| Time|root.ln.wf01.wt01.temperature|</span>
<span class="line">+-----------------------------+-----------------------------+</span>
<span class="line">|2017-11-01T00:00:00.000+08:00| 25.96|</span>
<span class="line">|2017-11-01T00:01:00.000+08:00| 24.36|</span>
<span class="line">|2017-11-01T00:02:00.000+08:00| 20.09|</span>
<span class="line">|2017-11-01T00:03:00.000+08:00| 20.18|</span>
<span class="line">|2017-11-01T00:04:00.000+08:00| 21.13|</span>
<span class="line">|2017-11-01T00:05:00.000+08:00| 22.72|</span>
<span class="line">|2017-11-01T00:06:00.000+08:00| 20.71|</span>
<span class="line">|2017-11-01T00:07:00.000+08:00| 21.45|</span>
<span class="line">+-----------------------------+-----------------------------+</span>
<span class="line">Total line number = 8</span>
<span class="line">It costs 0.026s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="示例2-根据一个时间区间选择多列数据" tabindex="-1"><a class="header-anchor" href="#示例2-根据一个时间区间选择多列数据"><span>示例2:根据一个时间区间选择多列数据</span></a></h3><p>SQL 语句为:</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">select</span> <span class="token keyword">status</span><span class="token punctuation">,</span> temperature <span class="token keyword">from</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01 <span class="token keyword">where</span> <span class="token keyword">time</span> <span class="token operator">&gt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">05</span>:<span class="token number">00.000</span> <span class="token operator">and</span> <span class="token keyword">time</span> <span class="token operator">&lt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">12</span>:<span class="token number">00.000</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>其含义为:</p><p>被选择的设备为 ln 集团 wf01 子站 wt01 设备;被选择的时间序列为供电状态(status)和温度传感器(temperature);该语句要求选择出 “2017-11-01T00:05:00.000” 至 “2017-11-01T00:12:00.000” 之间的所选时间序列的值。</p><p>该 SQL 语句的执行结果如下:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">| Time|root.ln.wf01.wt01.status|root.ln.wf01.wt01.temperature|</span>
<span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">|2017-11-01T00:06:00.000+08:00| false| 20.71|</span>
<span class="line">|2017-11-01T00:07:00.000+08:00| false| 21.45|</span>
<span class="line">|2017-11-01T00:08:00.000+08:00| false| 22.58|</span>
<span class="line">|2017-11-01T00:09:00.000+08:00| false| 20.98|</span>
<span class="line">|2017-11-01T00:10:00.000+08:00| true| 25.52|</span>
<span class="line">|2017-11-01T00:11:00.000+08:00| false| 22.91|</span>
<span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">Total line number = 6</span>
<span class="line">It costs 0.018s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="示例3-按照多个时间区间选择同一设备的多列数据" tabindex="-1"><a class="header-anchor" href="#示例3-按照多个时间区间选择同一设备的多列数据"><span>示例3:按照多个时间区间选择同一设备的多列数据</span></a></h3><p>IoTDB 支持在一次查询中指定多个时间区间条件,用户可以根据需求随意组合时间区间条件。例如,</p><p>SQL 语句为:</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">select</span> <span class="token keyword">status</span><span class="token punctuation">,</span> temperature <span class="token keyword">from</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span>wf01<span class="token punctuation">.</span>wt01 <span class="token keyword">where</span> <span class="token punctuation">(</span><span class="token keyword">time</span> <span class="token operator">&gt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">05</span>:<span class="token number">00.000</span> <span class="token operator">and</span> <span class="token keyword">time</span> <span class="token operator">&lt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">12</span>:<span class="token number">00.000</span><span class="token punctuation">)</span> <span class="token operator">or</span> <span class="token punctuation">(</span><span class="token keyword">time</span> <span class="token operator">&gt;=</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T16:<span class="token number">35</span>:<span class="token number">00.000</span> <span class="token operator">and</span> <span class="token keyword">time</span> <span class="token operator">&lt;=</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T16:<span class="token number">37</span>:<span class="token number">00.000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>其含义为:</p><p>被选择的设备为 ln 集团 wf01 子站 wt01 设备;被选择的时间序列为“供电状态(status)”和“温度传感器(temperature)”;该语句指定了两个不同的时间区间,分别为“2017-11-01T00:05:00.000 至 2017-11-01T00:12:00.000”和“2017-11-01T16:35:00.000 至 2017-11-01T16:37:00.000”;该语句要求选择出满足任一时间区间的被选时间序列的值。</p><p>该 SQL 语句的执行结果如下:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">| Time|root.ln.wf01.wt01.status|root.ln.wf01.wt01.temperature|</span>
<span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">|2017-11-01T00:06:00.000+08:00| false| 20.71|</span>
<span class="line">|2017-11-01T00:07:00.000+08:00| false| 21.45|</span>
<span class="line">|2017-11-01T00:08:00.000+08:00| false| 22.58|</span>
<span class="line">|2017-11-01T00:09:00.000+08:00| false| 20.98|</span>
<span class="line">|2017-11-01T00:10:00.000+08:00| true| 25.52|</span>
<span class="line">|2017-11-01T00:11:00.000+08:00| false| 22.91|</span>
<span class="line">|2017-11-01T16:35:00.000+08:00| true| 23.44|</span>
<span class="line">|2017-11-01T16:36:00.000+08:00| false| 21.98|</span>
<span class="line">|2017-11-01T16:37:00.000+08:00| false| 21.93|</span>
<span class="line">+-----------------------------+------------------------+-----------------------------+</span>
<span class="line">Total line number = 9</span>
<span class="line">It costs 0.018s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="示例4-按照多个时间区间选择不同设备的多列数据" tabindex="-1"><a class="header-anchor" href="#示例4-按照多个时间区间选择不同设备的多列数据"><span>示例4:按照多个时间区间选择不同设备的多列数据</span></a></h3><p>该系统支持在一次查询中选择任意列的数据,也就是说,被选择的列可以来源于不同的设备。例如,SQL 语句为:</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">select</span> wf01<span class="token punctuation">.</span>wt01<span class="token punctuation">.</span><span class="token keyword">status</span><span class="token punctuation">,</span> wf02<span class="token punctuation">.</span>wt02<span class="token punctuation">.</span>hardware <span class="token keyword">from</span> root<span class="token punctuation">.</span>ln <span class="token keyword">where</span> <span class="token punctuation">(</span><span class="token keyword">time</span> <span class="token operator">&gt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">05</span>:<span class="token number">00.000</span> <span class="token operator">and</span> <span class="token keyword">time</span> <span class="token operator">&lt;</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T00:<span class="token number">12</span>:<span class="token number">00.000</span><span class="token punctuation">)</span> <span class="token operator">or</span> <span class="token punctuation">(</span><span class="token keyword">time</span> <span class="token operator">&gt;=</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T16:<span class="token number">35</span>:<span class="token number">00.000</span> <span class="token operator">and</span> <span class="token keyword">time</span> <span class="token operator">&lt;=</span> <span class="token number">2017</span><span class="token operator">-</span><span class="token number">11</span><span class="token operator">-</span><span class="token number">01</span>T16:<span class="token number">37</span>:<span class="token number">00.000</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>其含义为:</p><p>被选择的时间序列为 “ln 集团 wf01 子站 wt01 设备的供电状态” 以及 “ln 集团 wf02 子站 wt02 设备的硬件版本”;该语句指定了两个时间区间,分别为 “2017-11-01T00:05:00.000 至 2017-11-01T00:12:00.000” 和 “2017-11-01T16:35:00.000 至 2017-11-01T16:37:00.000”;该语句要求选择出满足任意时间区间的被选时间序列的值。</p><p>该 SQL 语句的执行结果如下:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+-----------------------------+------------------------+--------------------------+</span>
<span class="line">| Time|root.ln.wf01.wt01.status|root.ln.wf02.wt02.hardware|</span>
<span class="line">+-----------------------------+------------------------+--------------------------+</span>
<span class="line">|2017-11-01T00:06:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T00:07:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T00:08:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T00:09:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T00:10:00.000+08:00| true| v2|</span>
<span class="line">|2017-11-01T00:11:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T16:35:00.000+08:00| true| v2|</span>
<span class="line">|2017-11-01T16:36:00.000+08:00| false| v1|</span>
<span class="line">|2017-11-01T16:37:00.000+08:00| false| v1|</span>
<span class="line">+-----------------------------+------------------------+--------------------------+</span>
<span class="line">Total line number = 9</span>
<span class="line">It costs 0.014s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="示例5-根据时间降序返回结果集" tabindex="-1"><a class="header-anchor" href="#示例5-根据时间降序返回结果集"><span>示例5:根据时间降序返回结果集</span></a></h3><p>IoTDB 支持 <code>order by time</code> 语句,用于对结果按照时间进行降序展示。例如,SQL 语句为:</p><div class="language-sql line-numbers-mode" data-highlighter="prismjs" data-ext="sql" data-title="sql"><pre><code><span class="line"><span class="token keyword">select</span> <span class="token operator">*</span> <span class="token keyword">from</span> root<span class="token punctuation">.</span>ln<span class="token punctuation">.</span><span class="token operator">*</span><span class="token operator">*</span> <span class="token keyword">where</span> <span class="token keyword">time</span> <span class="token operator">&gt;</span> <span class="token number">1</span> <span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token keyword">time</span> <span class="token keyword">desc</span> <span class="token keyword">limit</span> <span class="token number">10</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>语句执行的结果为:</p><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text" data-title="text"><pre><code><span class="line">+-----------------------------+--------------------------+------------------------+-----------------------------+------------------------+</span>
<span class="line">| Time|root.ln.wf02.wt02.hardware|root.ln.wf02.wt02.status|root.ln.wf01.wt01.temperature|root.ln.wf01.wt01.status|</span>
<span class="line">+-----------------------------+--------------------------+------------------------+-----------------------------+------------------------+</span>
<span class="line">|2017-11-07T23:59:00.000+08:00| v1| false| 21.07| false|</span>
<span class="line">|2017-11-07T23:58:00.000+08:00| v1| false| 22.93| false|</span>
<span class="line">|2017-11-07T23:57:00.000+08:00| v2| true| 24.39| true|</span>
<span class="line">|2017-11-07T23:56:00.000+08:00| v2| true| 24.44| true|</span>
<span class="line">|2017-11-07T23:55:00.000+08:00| v2| true| 25.9| true|</span>
<span class="line">|2017-11-07T23:54:00.000+08:00| v1| false| 22.52| false|</span>
<span class="line">|2017-11-07T23:53:00.000+08:00| v2| true| 24.58| true|</span>
<span class="line">|2017-11-07T23:52:00.000+08:00| v1| false| 20.18| false|</span>
<span class="line">|2017-11-07T23:51:00.000+08:00| v1| false| 22.24| false|</span>
<span class="line">|2017-11-07T23:50:00.000+08:00| v2| true| 23.7| true|</span>
<span class="line">+-----------------------------+--------------------------+------------------------+-----------------------------+------------------------+</span>
<span class="line">Total line number = 10</span>
<span class="line">It costs 0.016s</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="使用方式" tabindex="-1"><a class="header-anchor" href="#使用方式"><span>使用方式</span></a></h2><p>数据查询语句支持在 SQL 命令行终端、JDBCJAVA / C++ / Python / Go 等编程语言 APIRESTful API 中使用。</p>`,37)),s("ul",null,[s("li",null,[s("p",null,[n[52]||(n[52]=a("在 SQL 命令行终端中执行查询语句:启动 SQL 命令行终端,直接输入查询语句执行即可,详见 ")),l(e,{to:"/zh/UserGuide/V1.0.x/QuickStart/Command-Line-Interface.html"},{default:t(()=>n[51]||(n[51]=[a("SQL 命令行终端")])),_:1}),n[53]||(n[53]=a(""))])]),s("li",null,[s("p",null,[n[55]||(n[55]=a(" JDBC 中执行查询语句,详见 ")),l(e,{to:"/zh/UserGuide/V1.0.x/API/Programming-JDBC.html"},{default:t(()=>n[54]||(n[54]=[a("JDBC")])),_:1}),n[56]||(n[56]=a(" "))])]),n[60]||(n[60]=p(`<li><p>在 JAVA / C++ / Python / Go 等编程语言 API 中执行查询语句,详见应用编程接口一章相应文档。接口原型如下:</p><div class="language-java line-numbers-mode" data-highlighter="prismjs" data-ext="java" data-title="java"><pre><code><span class="line"><span class="token class-name">SessionDataSet</span> <span class="token function">executeQueryStatement</span><span class="token punctuation">(</span><span class="token class-name">String</span> sql<span class="token punctuation">)</span><span class="token punctuation">;</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div></li>`,1)),s("li",null,[s("p",null,[n[58]||(n[58]=a("在 RESTful API 中使用,详见 ")),l(e,{to:"/zh/UserGuide/V1.0.x/API/RestService.html"},{default:t(()=>n[57]||(n[57]=[a("HTTP API")])),_:1}),n[59]||(n[59]=a(" "))])])])])}const v=i(d,[["render",c],["__file","Overview.html.vue"]]),b=JSON.parse('{"path":"/zh/UserGuide/V1.0.x/Query-Data/Overview.html","title":"概述","lang":"zh-CN","frontmatter":{"description":"概述 IoTDB 中,使用 SELECT 语句从一条或多条时间序列中查询数据。 语法定义 语法说明 SELECT 子句 SELECT 子句指定查询的输出,由若干个 selectExpr 组成。 每个 selectExpr 定义查询结果中的一列或多列,它是一个由时间序列路径后缀、常量、函数和运算符组成的表达式。 支持使用AS为查询结果集中的列指定别名...","head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://iotdb.apache.org/UserGuide/V1.0.x/Query-Data/Overview.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/zh/UserGuide/V1.0.x/Query-Data/Overview.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"概述"}],["meta",{"property":"og:description","content":"概述 在 IoTDB 中,使用 SELECT 语句从一条或多条时间序列中查询数据。 语法定义 语法说明 SELECT 子句 SELECT 子句指定查询的输出,由若干个 selectExpr 组成。 每个 selectExpr 定义查询结果中的一列或多列,它是一个由时间序列路径后缀、常量、函数和运算符组成的表达式。 支持使用AS为查询结果集中的列指定别名..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2023-07-10T03:11:17.000Z"}],["meta",{"property":"article:modified_time","content":"2023-07-10T03:11:17.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"概述\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2023-07-10T03:11:17.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"语法定义","slug":"语法定义","link":"#语法定义","children":[]},{"level":2,"title":"语法说明","slug":"语法说明","link":"#语法说明","children":[{"level":3,"title":"SELECT 子句","slug":"select-子句","link":"#select-子句","children":[]},{"level":3,"title":"INTO 子句","slug":"into-子句","link":"#into-子句","children":[]},{"level":3,"title":"FROM 子句","slug":"from-子句","link":"#from-子句","children":[]},{"level":3,"title":"WHERE 子句","slug":"where-子句","link":"#where-子句","children":[]},{"level":3,"title":"GROUP BY 子句","slug":"group-by-子句","link":"#group-by-子句","children":[]},{"level":3,"title":"HAVING 子句","slug":"having-子句","link":"#having-子句","children":[]},{"level":3,"title":"ORDER BY 子句","slug":"order-by-子句","link":"#order-by-子句","children":[]},{"level":3,"title":"FILL 子句","slug":"fill-子句","link":"#fill-子句","children":[]},{"level":3,"title":"SLIMIT 和 SOFFSET 子句","slug":"slimit-和-soffset-子句","link":"#slimit-和-soffset-子句","children":[]},{"level":3,"title":"LIMIT 和 OFFSET 子句","slug":"limit-和-offset-子句","link":"#limit-和-offset-子句","children":[]},{"level":3,"title":"ALIGN BY 子句","slug":"align-by-子句","link":"#align-by-子句","children":[]}]},{"level":2,"title":"SQL 示例","slug":"sql-示例","link":"#sql-示例","children":[{"level":3,"title":"示例1:根据一个时间区间选择一列数据","slug":"示例1-根据一个时间区间选择一列数据","link":"#示例1-根据一个时间区间选择一列数据","children":[]},{"level":3,"title":"示例2:根据一个时间区间选择多列数据","slug":"示例2-根据一个时间区间选择多列数据","link":"#示例2-根据一个时间区间选择多列数据","children":[]},{"level":3,"title":"示例3:按照多个时间区间选择同一设备的多列数据","slug":"示例3-按照多个时间区间选择同一设备的多列数据","link":"#示例3-按照多个时间区间选择同一设备的多列数据","children":[]},{"level":3,"title":"示例4:按照多个时间区间选择不同设备的多列数据","slug":"示例4-按照多个时间区间选择不同设备的多列数据","link":"#示例4-按照多个时间区间选择不同设备的多列数据","children":[]},{"level":3,"title":"示例5:根据时间降序返回结果集","slug":"示例5-根据时间降序返回结果集","link":"#示例5-根据时间降序返回结果集","children":[]}]},{"level":2,"title":"使用方式","slug":"使用方式","link":"#使用方式","children":[]}],"git":{"createdTime":1688958677000,"updatedTime":1688958677000,"contributors":[{"name":"CritasWang","email":"critas@outlook.com","commits":1}]},"readingTime":{"minutes":9.01,"words":2702},"filePathRelative":"zh/UserGuide/V1.0.x/Query-Data/Overview.md","localizedDate":"2023年7月10日","autoDesc":true}');export{v as comp,b as data};