Files
doc-exports/docs/dli/sqlreference/en-us_topic_0000001873107668.html
Su, Xiaomeng be9eabe464 dli_sqlreference_20250305
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>
2025-03-25 09:06:21 +00:00

94 lines
9.8 KiB
HTML

<a name="EN-US_TOPIC_0000001873107668"></a><a name="EN-US_TOPIC_0000001873107668"></a>
<h1 class="topictitle1">Reusing Results of Subqueries</h1>
<div id="body0000001873107668"><div class="section" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_s9964bb020c52461992d2c7711fd7feed"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_a453a1e6d2a6e4b05a42b498a72d224bc">To improve query performance, caching the results of a subquery and reusing them in different parts of the query can be done to avoid redundant calculations of the same subquery during the execution of a SELECT statement.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_s13bf56fb20de4983b60dc6ad83bb2dd6"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001873107668__screen13867257514"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">WITH</span><span class="w"> </span><span class="n">cte_name</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="p">...</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="k">table_name</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="p">...</span>
<span class="p">)</span>
<span class="k">SELECT</span><span class="w"> </span><span class="p">...</span>
<span class="k">FROM</span><span class="w"> </span><span class="n">cte_name</span>
<span class="k">WHERE</span><span class="w"> </span><span class="p">...</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_sc899843a7d8e47fc8a0afeb9b1287b4a"><h4 class="sectiontitle">Keywords</h4>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_td6f691783cf344f2a5d66ba9d71b7fa3" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Keywords</caption><thead align="left"><tr id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_r2d76bd70763d404a8928220f4b186ea7"><th align="left" class="cellrowborder" valign="top" width="23.68%" id="mcps1.3.3.2.2.3.1.1"><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_a179ef9327ac44f1fa34c44e3924e9b91"><strong id="EN-US_TOPIC_0000001873107668__b075091616285">Parameter</strong></p>
</th>
<th align="left" class="cellrowborder" valign="top" width="76.32%" id="mcps1.3.3.2.2.3.1.2"><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_a9e03f595a7cb429fa8d66f2743475f0d"><strong id="EN-US_TOPIC_0000001873107668__b9858191810289">Description</strong></p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_r588c66895c4d41d8ac69a0ebef8cc058"><td class="cellrowborder" valign="top" width="23.68%" headers="mcps1.3.3.2.2.3.1.1 "><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_ad98aed1b98714731912a1a2e13e70b29">cte_name</p>
</td>
<td class="cellrowborder" valign="top" width="76.32%" headers="mcps1.3.3.2.2.3.1.2 "><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_ae3effa8447324943a5b79e2571c23121">Custom subquery name</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_row26579392213254"><td class="cellrowborder" valign="top" width="23.68%" headers="mcps1.3.3.2.2.3.1.1 "><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_p5447153213254">table_name</p>
</td>
<td class="cellrowborder" valign="top" width="76.32%" headers="mcps1.3.3.2.2.3.1.2 "><p id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_p1592117532059">Name of the table where subquery commands are executed</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_en-us_topic_0093946806_sc650d4ee825647c2a760ac5fcc4ab2c8"><h4 class="sectiontitle">Example</h4><ul id="EN-US_TOPIC_0000001873107668__ul174223519179"><li id="EN-US_TOPIC_0000001873107668__li742211571711">Example 1: Define the <strong id="EN-US_TOPIC_0000001873107668__b130864910325">sales_data</strong> subquery based on the <strong id="EN-US_TOPIC_0000001873107668__b1430543615323">sales</strong> table, query all items with sales amounts greater than 100, and retrieve all data from the subquery.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001873107668__en-us_topic_0167303041_screen1670916294251"><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">WITH</span><span class="w"> </span><span class="n">sales_data</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">product_name</span><span class="p">,</span><span class="w"> </span><span class="n">sales_amount</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">sales</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">sales_amount</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">100</span>
<span class="p">)</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">sales_data</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001873107668__li1914813191711">Example 2: Define two subqueries, <strong id="EN-US_TOPIC_0000001873107668__b557010510431">sales_data1</strong> and <strong id="EN-US_TOPIC_0000001873107668__b687210113438">sales_data2</strong>, based on the <strong id="EN-US_TOPIC_0000001873107668__b435012120439">sales</strong> table, where <strong id="EN-US_TOPIC_0000001873107668__b20879174316436">sales_data1</strong> retrieves all items with sales amounts greater than 100 and <strong id="EN-US_TOPIC_0000001873107668__b142916540445">sales_data2</strong> retrieves all items with sales amounts less than 20. Finally, merge the data from both subqueries.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001873107668__screen106107277182"><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></pre></div></td><td class="code"><div><pre><span></span><span class="k">WITH</span><span class="w"> </span><span class="n">sales_data1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">product_name</span><span class="p">,</span><span class="w"> </span><span class="n">sales_amount</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">sales</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">sales_amount</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">100</span>
<span class="p">),</span>
<span class="n">sales_data2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">product_name</span><span class="p">,</span><span class="w"> </span><span class="n">sales_amount</span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">sales</span>
<span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">sales_amount</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">20</span>
<span class="p">)</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">sales_data1</span>
<span class="k">UNION</span><span class="w"> </span><span class="k">ALL</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">sales_data2</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0221.html">Spark SQL Syntax Reference</a></div>
</div>
</div>