doc-exports/docs/dli/sqlreference/dli_08_0322.html
Su, Xiaomeng 04d4597cf3 dli_sqlreference_0511_version
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>
2023-11-02 14:34:08 +00:00

198 lines
40 KiB
HTML

<a name="dli_08_0322"></a><a name="dli_08_0322"></a>
<h1 class="topictitle1">SELECT</h1>
<div id="body8662426"><div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section954590143719"><h4 class="sectiontitle">SELECT</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p16501101593712"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b18536104512618">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen102143214113"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</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="err">{</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p95035155376"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b393844616262">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p84165564187">This clause is used to select data from a table.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p1383983711811">ALL indicates that all results are returned.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p52684814182">DISTINCT indicates that the duplicated results are removed.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1250510153374"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b1641974915269">Precautions</strong></p>
<ul id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_ul7507181583713"><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li1848894211371">The to-be-queried table must exist. Otherwise, an error is reported.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li148924220373">WHERE is used to specify the filtering condition, which can be the arithmetic operator, relational operator, or logical operator.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li7490134243713">GROUP BY is used to specify the grouping field, which can be one or more multiple fields.</li></ul>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p250916156375"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b12609165510264">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1651013159379">Select the order which contains more than 3 pieces of data.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen551119157372"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></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="o">*</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">WHERE</span><span class="w"> </span><span class="n">units</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1320913274195">Insert a group of constant data.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen3798175612190"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></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="s1">'Lily'</span><span class="p">,</span><span class="w"> </span><span class="s1">'male'</span><span class="p">,</span><span class="w"> </span><span class="s1">'student'</span><span class="p">,</span><span class="w"> </span><span class="mi">17</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section13761181010324"><h4 class="sectiontitle">WHERE Filtering Clause</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p87912280324"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b73185215277">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen495913494167"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p115412815328"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b92434619274">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_a8f7319db59ba400fa474251351564e30">This clause is used to filter the query results using the WHERE clause.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p729152893210"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b11121096275">Precautions</strong></p>
<ul id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_u79e4f31b03d345b3a19163111e7e29b2"><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_l2678b5e07f66468daf7e075d617cfad8">The to-be-queried table must exist.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_lb1b731404b844a0792f6a58c71d268b0">WHERE filters the records that do not meet the requirements.</li></ul>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p10518285322"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b122151154271">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_a593213d1d83d46b5887c0e81cb3929a6">Filter orders which contain more than 3 pieces and fewer than 10 pieces of data.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_sa600481ddf364d9db2627755b36a1cac"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></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="o">*</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">WHERE</span><span class="w"> </span><span class="n">units</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">units</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section496474933220"><h4 class="sectiontitle">HAVING Filtering Clause</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p9612102053315"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b43895711101020">Function</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p2070411617716">This clause is used to filter the query results using the HAVING clause.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p12589520193316"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b26452015272">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen897142112114"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</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="err">{</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p2056511204332"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b12682621192710">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p10314444270">Generally, HAVING and GROUP BY are used together. GROUP BY applies first for grouping and HAVING then applies for filtering. The arithmetic operation and aggregate function are supported by the HAVING clause.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p12539220183315"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b69794253273">Precautions</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1450085122718">If the filtering condition is subject to the query results of GROUP BY, the HAVING clause, rather than the WHERE clause, must be used for filtering.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p10520102063317"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b188082822716">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p6701013550">Group the <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b84235270694129">student</strong> table according to the <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b782382752610">name</strong> field and filter the records in which the maximum score is higher than 95 based on groups.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen470117131057"><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></pre></div></td><td class="code"><div><pre><span></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">max</span><span class="p">(</span><span class="n">score</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">student</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">name</span>
<span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="k">max</span><span class="p">(</span><span class="n">score</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="mi">95</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section1552562233413"><h4 class="sectiontitle">Column-Based GROUP BY</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p369464311342"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b782540293">Function</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p91753268819">This clause is used to group a table based on columns.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p9672194315344"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b128923562711">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen1831832732318"><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="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</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="err">{</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p14649184311345"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b8558163642715">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p450164017818">Column-based GROUP BY can be categorized into single-column GROUP BY and multi-column GROUP BY.</p>
<ul id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_ul1550194019817"><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li750114010818">Single-column GROUP BY indicates that the GROUP BY clause contains only one column.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li8506401813">Multi-column GROUP BY indicates that the GROUP BY clause contains multiple columns. The table will be grouped according to all fields in the GROUP BY clause. The records whose fields are the same are grouped into one group.</li></ul>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p13625134313343"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b849013427274">Precautions</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p293133612619">GroupBy generates update results in the stream processing table.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p260954363418"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b196161244152714">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_en-us_topic_0060751162_p185371040124">Group the <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b84235270694141">student</strong> table according to the score and name fields and return the grouping results.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen49611108118"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></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="n">score</span><span class="p">,</span><span class="w"> </span><span class="k">max</span><span class="p">(</span><span class="n">score</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">student</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">name</span><span class="p">,</span><span class="n">score</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section089215140352"><h4 class="sectiontitle">Expression-Based GROUP BY</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p6742184610351"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b59998951">Function</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_en-us_topic_0060751163_p6514875129">This clause is used to group a table according to expressions.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p072815469357"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b779135172716">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen12422155013254"><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="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</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="err">{</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1471034663515"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b28413533273">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_en-us_topic_0060751163_p751514711129">groupItem can have one or more fields. The fields can be called by string functions, but cannot be called by aggregate functions.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p86931946123511"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b1798045602719">Precautions</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p14567136464">None</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1867820461354"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b788355814270">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p771710344143">Use the substring function to obtain the character string from the name field, group the <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b84235270694149">student</strong> table according to the obtained character string, and return each sub string and the number of records.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen428513454147"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></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="k">substring</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="mi">6</span><span class="p">),</span><span class="k">count</span><span class="p">(</span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">student</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">substring</span><span class="p">(</span><span class="n">name</span><span class="p">,</span><span class="mi">6</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_section229013321257"><h4 class="sectiontitle">Grouping sets, Rollup, Cube</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p9446715666"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b1624446426">Function</strong></p>
<ul id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_ul286810431274"><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_li168681431278">The GROUP BY GROUPING SETS generates a result set equivalent to that generated by multiple simple GROUP BY UNION ALL statements. Using GROUPING SETS is more efficient.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_li4617466715">The ROLLUP and CUBE generate multiple groups based on certain rules and then collect statistics by group.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_li152961750677">The result set generated by CUBE contains all the combinations of values in the selected columns.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_li198042551874">The result set generated by ROLLUP contains the combinations of a certain layer structure in the selected columns.</li></ul>
<div class="p" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p1588717219810"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b1753045640">Syntax</strong><pre class="screen" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_screen116620016916">SELECT [ ALL | DISTINCT ] { * | projectItem [, projectItem ]* }
FROM tableExpression
[ WHERE booleanExpression ]
[ GROUP BY groupingItem]</pre>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p2735165817812"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b579498344">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p194812613497">Values of <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b5951121646">groupingItem</strong> can be <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b26041314942">Grouping sets(columnName [, columnName]*)</strong>, <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b1690619161946">Rollup(columnName [, columnName]*)</strong>, and <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b3705191914418">Cube(columnName [, columnName]*)</strong>.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p1513364884816"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b410576855">Precautions</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p11552153918911">None</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p39631058284"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b126524921">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_p18730154813116">Return the results generated based on <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b2092513494411">user</strong> and <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b410695217419">product</strong>.</p>
<pre class="screen" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_screen15129424131019">INSERT INTO temp SELECT SUM(amount)
FROM Orders
GROUP BY GROUPING SETS ((user), (product));</pre>
</div>
<div class="section" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_section95261910301"><h4 class="sectiontitle">GROUP BY Using HAVING</h4><p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p107501752371"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_b1862341538">Function</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p158591320161518">This statement filters a table after grouping it using the HAVING clause.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p173115518376"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b69626552815">Syntax</strong></p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen836920534261"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">ALL</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">projectItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</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="err">{</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">groupItem</span><span class="w"> </span><span class="p">]</span><span class="o">*</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="n">booleanExpression</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p177151253379"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b202911574286">Description</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p2030412512345">Generally, HAVING and GROUP BY are used together. GROUP BY applies first for grouping and HAVING then applies for filtering.</p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p169712543712"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b193218962814">Precautions</strong></p>
<ul id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_ul3158125061519"><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li015910505155">If the filtering condition is subject to the query results of GROUP BY, the HAVING clause, rather than the WHERE clause, must be used for filtering. HAVING and GROUP BY are used together. GROUP BY applies first for grouping and HAVING then applies for filtering.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li1603112813166">Fields used in HAVING, except for those used for aggregate functions, must exist in GROUP BY.</li><li id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_li17803103615213">The arithmetic operation and aggregate function are supported by the HAVING clause.</li></ul>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p1468118512371"><strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b84557169282">Example</strong></p>
<p id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_p436714915173">Group the <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b1536241416462">transactions</strong> according to <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b20568121812462">num</strong>, use the HAVING clause to filter the records in which the maximum value derived from multiplying <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b10251133744717">price</strong> with <strong id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_b528494274712">amount</strong> is higher than 5000, and return the filtered results.</p>
<div class="codecoloring" codetype="Sql" id="dli_08_0322__en-us_topic_0000001166031879_en-us_topic_0000001081579110_dli_08_0102_screen1736716918171"><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="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">num</span><span class="p">,</span><span class="w"> </span><span class="k">max</span><span class="p">(</span><span class="n">price</span><span class="o">*</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">transactions</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="k">time</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="s1">'2016-06-01'</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">num</span>
<span class="w"> </span><span class="k">HAVING</span><span class="w"> </span><span class="k">max</span><span class="p">(</span><span class="n">price</span><span class="o">*</span><span class="n">amount</span><span class="p">)</span><span class="o">&gt;</span><span class="mi">5000</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0321.html">Data Manipulation Language (DML)</a></div>
</div>
</div>