doc-exports/docs/dli/sqlreference/dli_08_0218.html
Su, Xiaomeng 76a5b1ee83 dli_sqlreference_20240227
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
Co-committed-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
2024-03-27 22:02:33 +00:00

223 lines
32 KiB
HTML

<a name="dli_08_0218"></a><a name="dli_08_0218"></a>
<h1 class="topictitle1">Window</h1>
<div id="body1574406512554"><div class="section" id="dli_08_0218__section2024062844120"><h4 class="sectiontitle">GROUP WINDOW</h4><p id="dli_08_0218__p1186294611411"><strong id="dli_08_0218__b03631912143915">Description</strong></p>
<p id="dli_08_0218__p126162818190">Group Window is defined in GROUP BY. One record is generated from each group. Group Window involves the following functions:</p>
<div class="note" id="dli_08_0218__note1426682323517"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><ul id="dli_08_0218__ul771319355"><li id="dli_08_0218__li48281029350"><strong id="dli_08_0218__b15786122853215">time_attr</strong> can be <strong id="dli_08_0218__b978610289322">processing-time</strong> or <strong id="dli_08_0218__b17786728103212">event-time</strong>.<ul id="dli_08_0218__ul19127869350"><li id="dli_08_0218__li10718123512"><strong id="dli_08_0218__b1031915452333">event-time</strong>: Specify the data type to <strong id="dli_08_0218__b49591527163310">bigint</strong> or <strong id="dli_08_0218__b11553183513339">timestamp</strong>.</li><li id="dli_08_0218__li57121123515"><strong id="dli_08_0218__b157704341">processing-time</strong>: No need to specify the type.</li></ul>
</li><li id="dli_08_0218__li017084113515"><strong id="dli_08_0218__b833471783411">interval</strong> specifies the window period.</li></ul>
</div></div>
<ul id="dli_08_0218__ul961719818191"><li id="dli_08_0218__li2617789199">Array functions
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0218__table1961711815196" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Array functions</caption><thead align="left"><tr id="dli_08_0218__row206171584195"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.1.5.1.1.2.3.1.1"><p id="dli_08_0218__p661748111910">Function Name</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.1.5.1.1.2.3.1.2"><p id="dli_08_0218__p6617882198">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="dli_08_0218__row16617128121918"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.1 "><p id="dli_08_0218__p186171687190">TUMBLE(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.2 "><p id="dli_08_0218__p166174871913">Indicates the tumble window.</p>
</td>
</tr>
<tr id="dli_08_0218__row76171383199"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.1 "><p id="dli_08_0218__p146172811918">HOP(time_attr, interval, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.2 "><p id="dli_08_0218__p36186841911">Indicates the extended tumble window (similar to the datastream sliding window). You can set the output triggering cycle and window period.</p>
</td>
</tr>
<tr id="dli_08_0218__row2618283199"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.1 "><p id="dli_08_0218__p146181582192">SESSION(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.1.1.2.3.1.2 "><p id="dli_08_0218__p9618208111914">Indicates the session window. A session window will be closed if no response is returned within a duration specified by <strong id="dli_08_0218__b842352706201858">interval</strong>.</p>
</td>
</tr>
</tbody>
</table>
</div>
</li><li id="dli_08_0218__li4618108171916">Window functions
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0218__table1361818813194" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Window functions</caption><thead align="left"><tr id="dli_08_0218__row186181816199"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.1.5.2.1.2.3.1.1"><p id="dli_08_0218__p126181810192">Function Name</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.1.5.2.1.2.3.1.2"><p id="dli_08_0218__p861818831915">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="dli_08_0218__row1661813813193"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p1618182196">TUMBLE_START(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p1561812813192">Indicates the start time of returning to the tumble window. The parameter is a UTC time zone.</p>
</td>
</tr>
<tr id="dli_08_0218__row196181286199"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p4618168131917">TUMBLE_END(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p461838131916">Indicates the end time of returning to the tumble window. The parameter is a UTC time zone.</p>
</td>
</tr>
<tr id="dli_08_0218__row761813841918"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p9618782198">HOP_START(time_attr, interval, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p12619689193">Indicates the start time of returning to the extended tumble window. The parameter is a UTC time zone.</p>
</td>
</tr>
<tr id="dli_08_0218__row1661968171910"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p13619886197">HOP_END(time_attr, interval, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p1261915831912">Indicates the end time of returning to the extended tumble window. The parameter is a UTC time zone.</p>
</td>
</tr>
<tr id="dli_08_0218__row1361918851920"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p261918861913">SESSION_START(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p461998161914">Indicates the start time of returning to the session window. The parameter is a UTC time zone.</p>
</td>
</tr>
<tr id="dli_08_0218__row9619118191911"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.1 "><p id="dli_08_0218__p16191289197">SESSION_END(time_attr, interval)</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.1.5.2.1.2.3.1.2 "><p id="dli_08_0218__p861918817190">Indicates the end time of returning to the session window. The parameter is a UTC time zone.</p>
</td>
</tr>
</tbody>
</table>
</div>
</li></ul>
<p id="dli_08_0218__p168321646204115"><strong id="dli_08_0218__b5368649163912">Example</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0218__screen83051324121513"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">SUM</span><span class="w"> </span><span class="k">every</span><span class="w"> </span><span class="k">day</span><span class="w"> </span><span class="p">(</span><span class="n">event</span><span class="w"> </span><span class="k">time</span><span class="p">).</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span>
<span class="w"> </span><span class="n">TUMBLE_START</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">wStart</span><span class="p">,</span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">TUMBLE</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">),</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">SUM</span><span class="w"> </span><span class="k">every</span><span class="w"> </span><span class="k">day</span><span class="w"> </span><span class="p">(</span><span class="n">processing</span><span class="w"> </span><span class="k">time</span><span class="p">).</span><span class="w"> </span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span><span class="w"> </span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">TUMBLE</span><span class="p">(</span><span class="n">proctime</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">),</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">SUM</span><span class="w"> </span><span class="n">over</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">recent</span><span class="w"> </span><span class="mi">24</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="k">every</span><span class="w"> </span><span class="n">hour</span><span class="w"> </span><span class="p">(</span><span class="n">event</span><span class="w"> </span><span class="k">time</span><span class="p">).</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">product</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span><span class="w"> </span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">HOP</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="n">HOUR</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">DAY</span><span class="p">),</span><span class="w"> </span><span class="n">product</span><span class="p">;</span>
<span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">SUM</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="k">each</span><span class="w"> </span><span class="k">session</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">an</span><span class="w"> </span><span class="n">inactive</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="k">every</span><span class="w"> </span><span class="mi">12</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="p">(</span><span class="n">event</span><span class="w"> </span><span class="k">time</span><span class="p">).</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="n">SESSION_START</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'12'</span><span class="w"> </span><span class="n">HOUR</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">sStart</span><span class="p">,</span>
<span class="w"> </span><span class="n">SESSION_END</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'12'</span><span class="w"> </span><span class="n">HOUR</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">sEnd</span><span class="p">,</span>
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span>
<span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="k">SESSION</span><span class="p">(</span><span class="n">ts</span><span class="p">,</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'12'</span><span class="w"> </span><span class="n">HOUR</span><span class="p">),</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0218__p09983161426"></p>
</div>
<div class="section" id="dli_08_0218__section6484122074210"><h4 class="sectiontitle">OVER WINDOW</h4><p id="dli_08_0218__en-us_topic_0061366422_p8060118">The difference between Over Window and Group Window is that one record is generated from one row in Over Window.</p>
<p id="dli_08_0218__p19991195813421"><strong id="dli_08_0218__b10667104204016">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0218__screen19309191263420"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="p">[</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">partition_name</span><span class="p">]</span>
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">proctime</span><span class="o">|</span><span class="n">rowtime</span><span class="p">(</span><span class="k">ROWS</span><span class="w"> </span><span class="nb">number</span><span class="w"> </span><span class="n">PRECEDING</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="p">(</span><span class="n">RANGE</span><span class="w"> </span><span class="p">(</span><span class="k">BETWEEN</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'1'</span><span class="w"> </span><span class="k">SECOND</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">preceding</span><span class="p">))</span>
<span class="p">)</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0218__p095985844216"><strong id="dli_08_0218__b4911619403">Description</strong></p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0218__table146491341826" frame="border" border="1" rules="all"><caption><b>Table 3 </b>Parameters</caption><thead align="left"><tr id="dli_08_0218__row564911410212"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.2.6.2.3.1.1"><p id="dli_08_0218__p1264914413220">Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.2.6.2.3.1.2"><p id="dli_08_0218__p864954110212">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="dli_08_0218__row264915415212"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.1 "><p id="dli_08_0218__p20819164316217">PARTITION BY</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.2 "><p id="dli_08_0218__p3649144110210">Indicates the primary key of the specified group. Each group separately performs calculation.</p>
</td>
</tr>
<tr id="dli_08_0218__row20649184116220"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.1 "><p id="dli_08_0218__p6649124114212">ORDER BY</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.2 "><p id="dli_08_0218__p1964974118212">Indicates the processing time or event time as the timestamp for data.</p>
</td>
</tr>
<tr id="dli_08_0218__row66494411127"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.1 "><p id="dli_08_0218__p66498411628">ROWS</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.2 "><p id="dli_08_0218__p13649134111217">Indicates the count window.</p>
</td>
</tr>
<tr id="dli_08_0218__row126497416217"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.1 "><p id="dli_08_0218__p265024112218">RANGE</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.2.6.2.3.1.2 "><p id="dli_08_0218__p465019411025">Indicates the time window.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p id="dli_08_0218__p149281358174219"><strong id="dli_08_0218__b18512716124012">Precautions</strong></p>
<ul id="dli_08_0218__ul3326204911412"><li id="dli_08_0218__li332554915412">In the same SELECT statement, windows defined by aggregate functions must be the same.</li><li id="dli_08_0218__li13261491242">Currently, Over Window only supports forward calculation (preceding).</li><li id="dli_08_0218__li19326174912416">The value of <strong id="dli_08_0218__b842352706202456">ORDER BY</strong> must be specified as <strong id="dli_08_0218__b84235270620251">processing time</strong> or <strong id="dli_08_0218__b84235270620255">event time</strong>.</li><li id="dli_08_0218__li13326104916417">Constants do not support aggregation, such as sum(2).</li></ul>
<p id="dli_08_0218__p1490312583421"><strong id="dli_08_0218__b150122410401">Example</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0218__screen42401715953"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span></pre></div></td><td class="code"><div><pre><span></span><span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">count</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">total</span><span class="w"> </span><span class="nb">number</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">syntax</span><span class="w"> </span><span class="n">rules</span><span class="w"> </span><span class="n">enabled</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">now</span><span class="w"> </span><span class="p">(</span><span class="k">in</span><span class="w"> </span><span class="n">proctime</span><span class="p">).</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span>
<span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">proctime</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">preceding</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt1</span><span class="p">,</span>
<span class="w"> </span><span class="k">sum</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">proctime</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="n">UNBOUNDED</span><span class="w"> </span><span class="n">preceding</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt2</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span><span class="p">;</span>
<span class="w"> </span>
<span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">count</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">total</span><span class="w"> </span><span class="nb">number</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">recent</span><span class="w"> </span><span class="n">four</span><span class="w"> </span><span class="n">records</span><span class="w"> </span><span class="p">(</span><span class="k">in</span><span class="w"> </span><span class="n">proctime</span><span class="p">).</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span>
<span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">proctime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt1</span><span class="p">,</span>
<span class="w"> </span><span class="k">sum</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">proctime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt2</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span><span class="p">;</span>
<span class="o">//</span><span class="n">Calculate</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="k">count</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">total</span><span class="w"> </span><span class="nb">number</span><span class="w"> </span><span class="k">last</span><span class="w"> </span><span class="mi">60</span><span class="n">s</span><span class="w"> </span><span class="p">(</span><span class="k">in</span><span class="w"> </span><span class="n">eventtime</span><span class="p">).</span><span class="w"> </span><span class="n">Process</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">events</span><span class="w"> </span><span class="n">based</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">event</span><span class="w"> </span><span class="k">time</span><span class="p">,</span><span class="w"> </span><span class="n">which</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">timeattr</span><span class="w"> </span><span class="n">field</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">Orders</span><span class="p">.</span>
<span class="k">insert</span><span class="w"> </span><span class="k">into</span><span class="w"> </span><span class="n">temp</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">name</span><span class="p">,</span>
<span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">timeattr</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'60'</span><span class="w"> </span><span class="k">SECOND</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt1</span><span class="p">,</span>
<span class="w"> </span><span class="k">sum</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">timeattr</span><span class="w"> </span><span class="n">RANGE</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="s1">'60'</span><span class="w"> </span><span class="k">SECOND</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">cnt2</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Orders</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0218__p194211230104218"></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0233.html">Flink SQL Syntax</a></div>
</div>
</div>