diff options
Diffstat (limited to 'www/lang_with.html')
-rw-r--r-- | www/lang_with.html | 3195 |
1 files changed, 3195 insertions, 0 deletions
diff --git a/www/lang_with.html b/www/lang_with.html new file mode 100644 index 0000000..aafca54 --- /dev/null +++ b/www/lang_with.html @@ -0,0 +1,3195 @@ +<!DOCTYPE html> +<html><head> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> +<link href="sqlite.css" rel="stylesheet"> +<title>The WITH Clause</title> +<!-- path= --> +</head> +<body> +<div class=nosearch> +<a href="index.html"> +<img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0"> +</a> +<div><!-- IE hack to prevent disappearing logo --></div> +<div class="tagline desktoponly"> +Small. Fast. Reliable.<br>Choose any three. +</div> +<div class="menu mainmenu"> +<ul> +<li><a href="index.html">Home</a> +<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a> +<li class='wideonly'><a href='about.html'>About</a> +<li class='desktoponly'><a href="docs.html">Documentation</a> +<li class='desktoponly'><a href="download.html">Download</a> +<li class='wideonly'><a href='copyright.html'>License</a> +<li class='desktoponly'><a href="support.html">Support</a> +<li class='desktoponly'><a href="prosupport.html">Purchase</a> +<li class='search' id='search_menubutton'> +<a href="javascript:void(0)" onclick='toggle_search()'>Search</a> +</ul> +</div> +<div class="menu submenu" id="submenu"> +<ul> +<li><a href='about.html'>About</a> +<li><a href='docs.html'>Documentation</a> +<li><a href='download.html'>Download</a> +<li><a href='support.html'>Support</a> +<li><a href='prosupport.html'>Purchase</a> +</ul> +</div> +<div class="searchmenu" id="searchmenu"> +<form method="GET" action="search"> +<select name="s" id="searchtype"> +<option value="d">Search Documentation</option> +<option value="c">Search Changelog</option> +</select> +<input type="text" name="q" id="searchbox" value=""> +<input type="submit" value="Go"> +</form> +</div> +</div> +<script> +function toggle_div(nm) { +var w = document.getElementById(nm); +if( w.style.display=="block" ){ +w.style.display = "none"; +}else{ +w.style.display = "block"; +} +} +function toggle_search() { +var w = document.getElementById("searchmenu"); +if( w.style.display=="block" ){ +w.style.display = "none"; +} else { +w.style.display = "block"; +setTimeout(function(){ +document.getElementById("searchbox").focus() +}, 30); +} +} +function div_off(nm){document.getElementById(nm).style.display="none";} +window.onbeforeunload = function(e){div_off("submenu");} +/* Disable the Search feature if we are not operating from CGI, since */ +/* Search is accomplished using CGI and will not work without it. */ +if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){ +document.getElementById("search_menubutton").style.display = "none"; +} +/* Used by the Hide/Show button beside syntax diagrams, to toggle the */ +function hideorshow(btn,obj){ +var x = document.getElementById(obj); +var b = document.getElementById(btn); +if( x.style.display!='none' ){ +x.style.display = 'none'; +b.innerHTML='show'; +}else{ +x.style.display = ''; +b.innerHTML='hide'; +} +return false; +} +var antiRobot = 0; +function antiRobotGo(){ +if( antiRobot!=3 ) return; +antiRobot = 7; +var j = document.getElementById("mtimelink"); +if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href"); +} +function antiRobotDefense(){ +document.body.onmousedown=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousedown=null; +} +document.body.onmousemove=function(){ +antiRobot |= 2; +antiRobotGo(); +document.body.onmousemove=null; +} +setTimeout(function(){ +antiRobot |= 1; +antiRobotGo(); +}, 100) +antiRobotGo(); +} +antiRobotDefense(); +</script> +<div class=fancy> +<div class=nosearch> +<div class="fancy_title"> +The WITH Clause +</div> +<div class="fancy_toc"> +<a onclick="toggle_toc()"> +<span class="fancy_toc_mark" id="toc_mk">►</span> +Table Of Contents +</a> +<div id="toc_sub"><div class="fancy-toc1"><a href="#overview">1. Overview</a></div> +<div class="fancy-toc1"><a href="#ordinary_common_table_expressions">2. Ordinary Common Table Expressions</a></div> +<div class="fancy-toc1"><a href="#recursive_common_table_expressions">3. Recursive Common Table Expressions</a></div> +<div class="fancy-toc2"><a href="#recursive_query_examples">3.1. Recursive Query Examples</a></div> +<div class="fancy-toc2"><a href="#hierarchical_query_examples">3.2. Hierarchical Query Examples</a></div> +<div class="fancy-toc2"><a href="#queries_against_a_graph">3.3. Queries Against A Graph</a></div> +<div class="fancy-toc2"><a href="#controlling_depth_first_versus_breadth_first_search_of_a_tree_using_order_by">3.4. Controlling Depth-First Versus Breadth-First Search Of a Tree +Using ORDER BY</a></div> +<div class="fancy-toc2"><a href="#outlandish_recursive_query_examples">3.5. Outlandish Recursive Query Examples</a></div> +<div class="fancy-toc1"><a href="#materialization_hints">4. Materialization Hints</a></div> +<div class="fancy-toc1"><a href="#limitations_and_caveats">5. Limitations And Caveats</a></div> +</div> +</div> +<script> +function toggle_toc(){ +var sub = document.getElementById("toc_sub") +var mk = document.getElementById("toc_mk") +if( sub.style.display!="block" ){ +sub.style.display = "block"; +mk.innerHTML = "▼"; +} else { +sub.style.display = "none"; +mk.innerHTML = "►"; +} +} +</script> +</div> + + + + +<h1 id="overview"><span>1. </span>Overview</h1> +<p><b><a href="syntax/with-clause.html">with-clause:</a></b> +<button id='x2257' onclick='hideorshow("x2257","x2258")'>hide</button></p> + <div id='x2258' class='imgcontainer'> + <div style="max-width:1056px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 1056.72 140.4"> +<circle cx="5" cy="85" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,85 20,89 20,81" style="fill:rgb(0,0,0)"/> +<path d="M9,85L26,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,100L78,100A15 15 0 0 0 93 85A15 15 0 0 0 78 70L47,70A15 15 0 0 0 32 85A15 15 0 0 0 47 100Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="62" y="85" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WITH</text> +<polygon points="134,55 123,59 123,50" style="fill:rgb(0,0,0)"/> +<path d="M93,85 L 100,85 Q 108,85 108,70 L 108,70 Q 108,55 118,55 L 129,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M150,70L235,70A15 15 0 0 0 250 55L250,55A15 15 0 0 0 235 39L150,39A15 15 0 0 0 134 55L134,55A15 15 0 0 0 150 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="192" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RECURSIVE</text> +<path d="M250,55 L 258,55 Q 265,55 265,70 L 265,70 Q 265,85 273,85 L 280,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="307,85 295,89 295,81" style="fill:rgb(0,0,0)"/> +<path d="M280,85L301,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M307,100L444,100L444,70L307,70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="375" y="85" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">cte-table-name</text> +<polygon points="467,85 455,89 455,81" style="fill:rgb(0,0,0)"/> +<path d="M444,85L461,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M482,100L486,100A15 15 0 0 0 501 85A15 15 0 0 0 486 70L482,70A15 15 0 0 0 467 85A15 15 0 0 0 482 100Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="484" y="85" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="542,17 531,21 531,12" style="fill:rgb(0,0,0)"/> +<path d="M501,85 L 508,85 Q 516,85 516,70 L 516,32 Q 516,17 526,17 L 537,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M558,32L578,32A15 15 0 0 0 593 17L593,17A15 15 0 0 0 578 2L558,2A15 15 0 0 0 542 17L542,17A15 15 0 0 0 558 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="568" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="610,17 599,21 599,12" style="fill:rgb(0,0,0)"/> +<path d="M593,17L604,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M625,32L743,32A15 15 0 0 0 759 17L759,17A15 15 0 0 0 743 2L625,2A15 15 0 0 0 610 17L610,17A15 15 0 0 0 625 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="684" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">MATERIALIZED</text> +<polygon points="800,85 789,89 789,81" style="fill:rgb(0,0,0)"/> +<path d="M759,17 L 766,17 Q 774,17 774,32 L 774,70 Q 774,85 784,85 L 794,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M815,100A15 15 0 0 0 830 85A15 15 0 0 0 815 70A15 15 0 0 0 800 85A15 15 0 0 0 815 100Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="815" y="85" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="853,85 842,89 842,81" style="fill:rgb(0,0,0)"/> +<path d="M830,85L848,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M853,100L958,100L958,70L853,70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="905" y="85" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">select-stmt</text> +<polygon points="981,85 969,89 969,81" style="fill:rgb(0,0,0)"/> +<path d="M958,85L975,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M996,100A15 15 0 0 0 1011 85A15 15 0 0 0 996 70A15 15 0 0 0 981 85A15 15 0 0 0 996 100Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="996" y="85" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="1047,85 1035,89 1035,81" style="fill:rgb(0,0,0)"/> +<path d="M1011,85L1041,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="1050" cy="85" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="542,56 531,60 531,52" style="fill:rgb(0,0,0)"/> +<path d="M501,85 L 508,85 Q 516,85 516,70 Q 516,56 526,56 L 537,56" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M558,71L676,71A15 15 0 0 0 691 56A15 15 0 0 0 676 41L558,41A15 15 0 0 0 542 56A15 15 0 0 0 558 71Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="617" y="56" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">MATERIALIZED</text> +<polygon points="759,56 747,60 747,52" style="fill:rgb(0,0,0)"/> +<path d="M691,56L753,56" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M759,56 L 766,56 Q 774,56 774,64 L 774,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="617,85 605,89 605,81" style="fill:rgb(0,0,0)"/> +<path d="M501,85L611,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M617,85L800,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M659,138A15 15 0 0 0 674 123L674,123A15 15 0 0 0 659 108A15 15 0 0 0 644 123L644,123A15 15 0 0 0 659 138Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="659" y="123" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="674,123 686,118 686,127" style="fill:rgb(0,0,0)"/> +<path d="M1011,85 L 1018,85 Q 1026,85 1026,100 L 1026,108 Q 1026,123 1011,123 L 695,123 L 680,123" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M644,123 L 295,123 Q 280,123 280,108 L 280,100 Q 280,85 288,85 L 295,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M93,85L295,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/cte-table-name.html">cte-table-name:</a></b> +<button id='x2259' onclick='hideorshow("x2259","x2260")'>show</button></p> + <div id='x2260' style='display:none;' class='imgcontainer'> + <div style="max-width:475px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 475.949 91.8"> +<circle cx="5" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,36 20,41 20,32" style="fill:rgb(0,0,0)"/> +<path d="M9,36L26,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,51L122,51A15 15 0 0 0 137 36A15 15 0 0 0 122 21L47,21A15 15 0 0 0 32 36A15 15 0 0 0 47 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="85" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="173,36 162,41 162,32" style="fill:rgb(0,0,0)"/> +<path d="M137,36L168,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M188,51A15 15 0 0 0 204 36A15 15 0 0 0 188 21A15 15 0 0 0 173 36A15 15 0 0 0 188 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="188" y="36" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="240,36 228,41 228,32" style="fill:rgb(0,0,0)"/> +<path d="M204,36L234,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M255,51L349,51A15 15 0 0 0 364 36A15 15 0 0 0 349 21L255,21A15 15 0 0 0 240 36A15 15 0 0 0 255 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="302" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-name</text> +<polygon points="400,36 388,41 388,32" style="fill:rgb(0,0,0)"/> +<path d="M364,36L394,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M415,51A15 15 0 0 0 430 36A15 15 0 0 0 415 21A15 15 0 0 0 400 36A15 15 0 0 0 415 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="415" y="36" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="466,36 455,41 455,32" style="fill:rgb(0,0,0)"/> +<path d="M430,36L460,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="470" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M302,89A15 15 0 0 0 317 74L317,74A15 15 0 0 0 302 59A15 15 0 0 0 287 74L287,74A15 15 0 0 0 302 89Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="302" y="74" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="317,74 328,70 328,78" style="fill:rgb(0,0,0)"/> +<path d="M364,36 L 371,36 Q 379,36 379,51 L 379,59 Q 379,74 364,74 L 338,74 L 323,74" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M287,74 L 232,74 Q 217,74 217,59 L 217,51 Q 217,36 224,36 L 232,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="302,6 290,10 290,2" style="fill:rgb(0,0,0)"/> +<path d="M137,36 L 145,36 Q 152,36 152,21 L 152,21 Q 152,6 167,6 L 281,6 L 296,6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M302,6 L 422,6 Q 437,6 437,21 L 437,21 Q 437,36 445,36 L 452,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/select-stmt.html">select-stmt:</a></b> +<button id='x2261' onclick='hideorshow("x2261","x2262")'>show</button></p> + <div id='x2262' style='display:none;' class='imgcontainer'> + <div style="max-width:669px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 669.677 1162.3"> +<path d="M55,845L667,845L667,99L55,99Z" style="fill:none;stroke-width:3.24;stroke:rgb(211,211,211);" /> +<circle cx="6" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="46,17 34,21 34,12" style="fill:rgb(0,0,0)"/> +<path d="M10,17L40,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M61,32L92,32A15 15 0 0 0 107 17A15 15 0 0 0 92 2L61,2A15 15 0 0 0 46 17A15 15 0 0 0 61 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="76" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WITH</text> +<path d="M167,62L253,62A15 15 0 0 0 268 47L268,47A15 15 0 0 0 253 32L167,32A15 15 0 0 0 152 47L152,47A15 15 0 0 0 167 62Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="210" y="47" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RECURSIVE</text> +<polygon points="210,17 198,21 198,12" style="fill:rgb(0,0,0)"/> +<path d="M107,17L204,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="358,17 346,21 346,12" style="fill:rgb(0,0,0)"/> +<path d="M210,17L352,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M358,32L584,32L584,2L358,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="471" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">common-table-expression</text> +<polygon points="152,47 140,51 140,43" style="fill:rgb(0,0,0)"/> +<path d="M107,17 L 114,17 Q 122,17 122,32 L 122,32 Q 122,47 134,47 L 146,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="291,47 279,51 279,43" style="fill:rgb(0,0,0)"/> +<path d="M268,47L285,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M291,47 L 298,47 Q 306,47 306,32 L 306,32 Q 306,17 321,17 L 331,17 L 346,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M471,70A15 15 0 0 0 486 55L486,55A15 15 0 0 0 471 39A15 15 0 0 0 456 55L456,55A15 15 0 0 0 471 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="471" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="486,55 498,50 498,59" style="fill:rgb(0,0,0)"/> +<path d="M584,17 L 592,17 Q 599,17 599,32 L 599,40 Q 599,55 584,55 L 507,55 L 492,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M456,55 L 350,55 Q 335,55 335,40 L 335,32 Q 335,17 340,17 L 346,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="295,83 307,79 307,88" style="fill:rgb(0,0,0)"/> +<path d="M584,17 L 592,17 Q 599,17 599,32 L 599,68 Q 599,83 584,83 L 316,83 L 301,83" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M295,83 L 40,83 Q 25,83 25,98 L 25,113" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="25,47 20,36 29,36" style="fill:rgb(0,0,0)"/> +<path d="M10,17 L 17,17 Q 25,17 25,29 L 25,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="55,129 43,133 43,124" style="fill:rgb(0,0,0)"/> +<path d="M25,47 L 25,114 Q 25,129 37,129 L 49,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,129 115,133 115,124" style="fill:rgb(0,0,0)"/> +<path d="M55,129L121,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M142,144L193,144A15 15 0 0 0 208 129A15 15 0 0 0 193 114L142,114A15 15 0 0 0 127 129A15 15 0 0 0 142 144Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="167" y="129" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">SELECT</text> +<polygon points="250,159 238,163 238,155" style="fill:rgb(0,0,0)"/> +<path d="M208,129 L 216,129 Q 223,129 223,144 L 223,144 Q 223,159 233,159 L 244,159" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M265,174L333,174A15 15 0 0 0 348 159A15 15 0 0 0 333 144L265,144A15 15 0 0 0 250 159A15 15 0 0 0 265 174Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="299" y="159" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">DISTINCT</text> +<polygon points="417,129 406,133 406,124" style="fill:rgb(0,0,0)"/> +<path d="M348,159 L 356,159 Q 363,159 363,144 L 363,144 Q 363,129 378,129 L 396,129 L 411,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M417,144L545,144L545,114L417,114Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="481" y="129" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">result-column</text> +<path d="M481,182A15 15 0 0 0 496 166A15 15 0 0 0 481 151A15 15 0 0 0 466 166A15 15 0 0 0 481 182Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="481" y="166" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="496,166 508,162 508,171" style="fill:rgb(0,0,0)"/> +<path d="M545,129 L 552,129 Q 560,129 560,144 L 560,151 Q 560,166 545,166 L 517,166 L 502,166" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M466,166 L 406,166 Q 391,166 391,151 L 391,144 Q 391,129 398,129 L 406,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="299,129 287,133 287,124" style="fill:rgb(0,0,0)"/> +<path d="M208,129L293,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M299,129L406,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M265,212L280,212A15 15 0 0 0 295 197A15 15 0 0 0 280 182L265,182A15 15 0 0 0 250 197A15 15 0 0 0 265 212Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="272" y="197" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ALL</text> +<polygon points="348,197 337,201 337,192" style="fill:rgb(0,0,0)"/> +<path d="M295,197L342,197" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M348,197 L 356,197 Q 363,197 363,182 L 363,159 L 363,144" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="250,197 238,201 238,192" style="fill:rgb(0,0,0)"/> +<path d="M208,129 L 216,129 Q 223,129 223,144 L 223,182 Q 223,197 233,197 L 244,197" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M168,287L203,287A15 15 0 0 0 218 272A15 15 0 0 0 203 257L168,257A15 15 0 0 0 153 272A15 15 0 0 0 168 287Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="186" y="272" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FROM</text> +<polygon points="290,272 279,277 279,268" style="fill:rgb(0,0,0)"/> +<path d="M218,272L284,272" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,287L451,287L451,257L290,257Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="371" y="272" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-or-subquery</text> +<path d="M320,362L422,362L422,331L320,331Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="371" y="346" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">join-clause</text> +<path d="M371,324A15 15 0 0 0 386 309A15 15 0 0 0 371 293A15 15 0 0 0 356 309A15 15 0 0 0 371 324Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="371" y="309" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="386,309 397,304 397,313" style="fill:rgb(0,0,0)"/> +<path d="M451,272 L 459,272 Q 466,272 466,287 L 466,294 Q 466,309 451,309 L 407,309 L 392,309" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M356,309 L 279,309 Q 264,309 264,294 L 264,287 Q 264,272 271,272 L 279,272" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="320,346 308,351 308,342" style="fill:rgb(0,0,0)"/> +<path d="M218,272 L 226,272 Q 233,272 233,287 L 233,331 Q 233,346 248,346 L 299,346 L 314,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="484,313 488,325 480,325" style="fill:rgb(0,0,0)"/> +<path d="M422,346 L 436,346 Q 451,346 466,346 L 469,346 Q 484,346 484,333 L 484,319" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="505,272 494,277 494,268" style="fill:rgb(0,0,0)"/> +<path d="M484,313 L 484,287 Q 484,272 492,272 L 499,272" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M505,272 L 496,272 Q 487,272 487,272 Q 487,272 495,272 L 502,272" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="560,197 555,185 564,185" style="fill:rgb(0,0,0)"/> +<path d="M545,129 L 552,129 Q 560,129 560,144 L 560,176 L 560,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="348,235 360,230 360,239" style="fill:rgb(0,0,0)"/> +<path d="M560,197 L 560,220 Q 560,235 545,235 L 369,235 L 354,235" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,272 142,277 142,268" style="fill:rgb(0,0,0)"/> +<path d="M348,235 L 142,235 Q 127,235 127,250 L 127,257 Q 127,272 137,272 L 147,272" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M168,437L218,437A15 15 0 0 0 233 422A15 15 0 0 0 218 407L168,407A15 15 0 0 0 153 422A15 15 0 0 0 168 437Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="193" y="422" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WHERE</text> +<polygon points="256,422 244,426 244,418" style="fill:rgb(0,0,0)"/> +<path d="M233,422L250,422" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M256,437L305,437L305,407L256,407Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="280" y="422" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="517,324 513,312 521,312" style="fill:rgb(0,0,0)"/> +<path d="M451,272 L 502,272 Q 517,272 517,287 L 517,303 L 517,318" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="371,384 382,380 382,389" style="fill:rgb(0,0,0)"/> +<path d="M517,324 L 517,369 Q 517,384 502,384 L 391,384 L 376,384" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,422 142,426 142,418" style="fill:rgb(0,0,0)"/> +<path d="M371,384 L 142,384 Q 127,384 127,399 L 127,407 Q 127,422 137,422 L 147,422" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,324 122,312 131,312" style="fill:rgb(0,0,0)"/> +<path d="M127,257L127,318" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M127,324L127,407" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M168,535L212,535A15 15 0 0 0 227 520A15 15 0 0 0 212 505L168,505A15 15 0 0 0 153 520A15 15 0 0 0 168 535Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="190" y="520" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GROUP</text> +<polygon points="250,520 238,525 238,516" style="fill:rgb(0,0,0)"/> +<path d="M227,520L244,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M265,535L269,535A15 15 0 0 0 284 520A15 15 0 0 0 269 505L265,505A15 15 0 0 0 250 520A15 15 0 0 0 265 535Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="267" y="520" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="320,520 309,525 309,516" style="fill:rgb(0,0,0)"/> +<path d="M284,520L314,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M320,535L369,535L369,505L320,505Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="345" y="520" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="452,520 441,525 441,516" style="fill:rgb(0,0,0)"/> +<path d="M369,520L446,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M467,535L520,535A15 15 0 0 0 535 520A15 15 0 0 0 520 505L467,505A15 15 0 0 0 452 520A15 15 0 0 0 467 535Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="493" y="520" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">HAVING</text> +<polygon points="558,520 546,525 546,516" style="fill:rgb(0,0,0)"/> +<path d="M535,520L552,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M558,535L607,535L607,505L558,505Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="582" y="520" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<path d="M345,573A15 15 0 0 0 360 558A15 15 0 0 0 345 543A15 15 0 0 0 330 558A15 15 0 0 0 345 573Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="345" y="558" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="360,558 371,554 371,562" style="fill:rgb(0,0,0)"/> +<path d="M369,520 L 377,520 Q 384,520 384,535 L 384,543 Q 384,558 375,558 L 366,558" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M330,558 L 309,558 Q 294,558 294,543 L 294,535 Q 294,520 301,520 L 309,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="514,551 503,555 503,546" style="fill:rgb(0,0,0)"/> +<path d="M411,520 L 418,520 Q 426,520 426,535 L 426,536 Q 426,551 441,551 L 493,551 L 508,551" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M514,551 L 607,551 Q 622,551 622,536 L 622,535 Q 622,520 630,520 L 637,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="267,490 256,494 256,486" style="fill:rgb(0,0,0)"/> +<path d="M127,460 L 127,475 Q 127,490 142,490 L 246,490 L 261,490" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="411,520 399,525 399,516" style="fill:rgb(0,0,0)"/> +<path d="M267,490 L 369,490 Q 384,490 384,505 L 384,505 Q 384,520 395,520 L 405,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="233,460 244,455 244,464" style="fill:rgb(0,0,0)"/> +<path d="M305,422 L 313,422 Q 320,422 320,437 L 320,445 Q 320,460 305,460 L 254,460 L 239,460" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,520 142,525 142,516" style="fill:rgb(0,0,0)"/> +<path d="M233,460 L 142,460 Q 127,460 127,475 L 127,505 Q 127,520 137,520 L 147,520" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,447 122,435 131,435" style="fill:rgb(0,0,0)"/> +<path d="M127,407L127,441" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M127,447L127,505" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M168,649L232,649A15 15 0 0 0 247 634A15 15 0 0 0 232 619L168,619A15 15 0 0 0 153 634A15 15 0 0 0 168 649Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="200" y="634" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WINDOW</text> +<polygon points="283,634 271,638 271,629" style="fill:rgb(0,0,0)"/> +<path d="M247,634L277,634" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M298,649L395,649A15 15 0 0 0 410 634A15 15 0 0 0 395 619L298,619A15 15 0 0 0 283 634A15 15 0 0 0 298 649Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="346" y="634" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">window-name</text> +<polygon points="433,634 422,638 422,629" style="fill:rgb(0,0,0)"/> +<path d="M410,634L427,634" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M448,649L452,649A15 15 0 0 0 467 634A15 15 0 0 0 452 619L448,619A15 15 0 0 0 433 634A15 15 0 0 0 448 649Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="450" y="634" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="490,634 479,638 479,629" style="fill:rgb(0,0,0)"/> +<path d="M467,634L485,634" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M490,649L609,649L609,619L490,619Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="550" y="634" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">window-defn</text> +<path d="M446,687A15 15 0 0 0 461 671A15 15 0 0 0 446 656A15 15 0 0 0 431 671A15 15 0 0 0 446 687Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="446" y="671" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="461,671 472,667 472,676" style="fill:rgb(0,0,0)"/> +<path d="M609,634 L 616,634 Q 624,634 624,649 L 624,656 Q 624,671 609,671 L 482,671 L 467,671" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M431,671 L 271,671 Q 256,671 256,656 L 256,649 Q 256,634 264,634 L 271,634" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="624,692 619,680 628,680" style="fill:rgb(0,0,0)"/> +<path d="M624,656L624,686" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="652,558 648,547 656,547" style="fill:rgb(0,0,0)"/> +<path d="M607,520 L 637,520 Q 652,520 652,535 L 652,537 L 652,552" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="371,596 382,592 382,600" style="fill:rgb(0,0,0)"/> +<path d="M652,558 L 652,581 Q 652,596 637,596 L 391,596 L 376,596" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,634 142,638 142,629" style="fill:rgb(0,0,0)"/> +<path d="M371,596 L 142,596 Q 127,596 127,611 L 127,619 Q 127,634 137,634 L 147,634" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,558 122,547 131,547" style="fill:rgb(0,0,0)"/> +<path d="M127,505L127,552" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="371,709 359,714 359,705" style="fill:rgb(0,0,0)"/> +<path d="M127,558 L 127,694 Q 127,709 142,709 L 350,709 L 365,709" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="609,709 597,714 597,705" style="fill:rgb(0,0,0)"/> +<path d="M371,709L603,709" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M609,709 L 616,709 Q 624,709 624,717 L 624,724" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M142,800L194,800A15 15 0 0 0 209 785A15 15 0 0 0 194 770L142,770A15 15 0 0 0 127 785A15 15 0 0 0 142 800Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="168" y="785" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">VALUES</text> +<polygon points="245,785 234,789 234,781" style="fill:rgb(0,0,0)"/> +<path d="M209,785L239,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M260,800A15 15 0 0 0 275 785A15 15 0 0 0 260 770A15 15 0 0 0 245 785A15 15 0 0 0 260 800Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="260" y="785" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="311,785 300,789 300,781" style="fill:rgb(0,0,0)"/> +<path d="M275,785L306,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M311,800L361,800L361,770L311,770Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="336" y="785" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="397,785 385,789 385,781" style="fill:rgb(0,0,0)"/> +<path d="M361,785L391,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M412,800A15 15 0 0 0 427 785A15 15 0 0 0 412 770A15 15 0 0 0 397 785A15 15 0 0 0 412 800Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="412" y="785" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="609,785 597,789 597,781" style="fill:rgb(0,0,0)"/> +<path d="M427,785L603,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M609,785 L 616,785 Q 624,785 624,792 L 624,800" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M336,762A15 15 0 0 0 351 747A15 15 0 0 0 336 732A15 15 0 0 0 321 747A15 15 0 0 0 336 762Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="336" y="747" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<path d="M336,838A15 15 0 0 0 351 823A15 15 0 0 0 336 808A15 15 0 0 0 321 823A15 15 0 0 0 336 838Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="336" y="823" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="351,747 363,743 363,751" style="fill:rgb(0,0,0)"/> +<path d="M361,785 L 368,785 Q 376,785 376,770 L 376,762 Q 376,747 366,747 L 357,747" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M321,747 L 300,747 Q 285,747 285,762 L 285,770 Q 285,785 292,785 L 300,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,823 363,818 363,827" style="fill:rgb(0,0,0)"/> +<path d="M427,785 L 434,785 Q 442,785 442,800 L 442,808 Q 442,823 427,823 L 372,823 L 357,823" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M321,823 L 234,823 Q 219,823 219,808 L 219,800 Q 219,785 226,785 L 234,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,785 115,789 115,781" style="fill:rgb(0,0,0)"/> +<path d="M55,129 L 62,129 Q 70,129 70,144 L 70,770 Q 70,785 85,785 L 106,785 L 121,785" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M248,891L424,891L424,860L248,860Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="336" y="876" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">compound-operator</text> +<polygon points="424,876 436,871 436,880" style="fill:rgb(0,0,0)"/> +<path d="M624,692 L 624,861 Q 624,876 609,876 L 445,876 L 430,876" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="6,197 10,208 2,208" style="fill:rgb(0,0,0)"/> +<path d="M248,876 L 21,876 Q 6,876 6,861 L 6,217 L 6,202" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M6,197 L 6,144 Q 6,129 21,129 L 40,129 L 55,129" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="667" y="275" text-anchor="middle" font-style="italic" fill="rgb(128,128,128)" transform="rotate(-90 667,285)" dominant-baseline="central">select-core</text> +<path d="M168,966L213,966A15 15 0 0 0 228 951A15 15 0 0 0 213 936L168,936A15 15 0 0 0 153 951A15 15 0 0 0 168 966Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="190" y="951" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ORDER</text> +<polygon points="251,951 239,956 239,947" style="fill:rgb(0,0,0)"/> +<path d="M228,951L245,951" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M266,966L270,966A15 15 0 0 0 285 951A15 15 0 0 0 270 936L266,936A15 15 0 0 0 251 951A15 15 0 0 0 266 966Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="268" y="951" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<path d="M168,1072L202,1072A15 15 0 0 0 217 1057A15 15 0 0 0 202 1042L168,1042A15 15 0 0 0 153 1057A15 15 0 0 0 168 1072Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="185" y="1057" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">LIMIT</text> +<polygon points="240,1057 228,1061 228,1053" style="fill:rgb(0,0,0)"/> +<path d="M217,1057L234,1057" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M240,1072L289,1072L289,1042L240,1042Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="264" y="1057" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="330,951 319,956 319,947" style="fill:rgb(0,0,0)"/> +<path d="M285,951L324,951" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M330,966L460,966L460,936L330,936Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="395" y="951" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ordering-term</text> +<path d="M395,1004A15 15 0 0 0 410 989A15 15 0 0 0 395 974A15 15 0 0 0 380 989A15 15 0 0 0 395 1004Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="395" y="989" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="410,989 422,985 422,993" style="fill:rgb(0,0,0)"/> +<path d="M460,951 L 468,951 Q 475,951 475,966 L 475,974 Q 475,989 460,989 L 431,989 L 416,989" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M380,989 L 322,989 Q 307,989 307,974 L 307,966 Q 307,951 313,951 L 319,951" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="336,913 348,909 348,918" style="fill:rgb(0,0,0)"/> +<path d="M624,860 L 624,898 Q 624,913 609,913 L 357,913 L 342,913" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,951 142,956 142,947" style="fill:rgb(0,0,0)"/> +<path d="M336,913 L 142,913 Q 127,913 127,928 L 127,936 Q 127,951 137,951 L 147,951" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="496,981 492,970 500,970" style="fill:rgb(0,0,0)"/> +<path d="M460,951 L 481,951 Q 496,951 496,963 L 496,976" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="307,1023 318,1019 318,1027" style="fill:rgb(0,0,0)"/> +<path d="M496,981 L 496,1008 Q 496,1023 481,1023 L 327,1023 L 312,1023" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,1057 142,1061 142,1053" style="fill:rgb(0,0,0)"/> +<path d="M307,1023 L 142,1023 Q 127,1023 127,1038 L 127,1042 Q 127,1057 137,1057 L 147,1057" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="127,989 122,978 131,978" style="fill:rgb(0,0,0)"/> +<path d="M127,936L127,983" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M127,989L127,1042" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M363,1102L415,1102A15 15 0 0 0 430 1087A15 15 0 0 0 415 1072L363,1072A15 15 0 0 0 348 1087A15 15 0 0 0 363 1102Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="389" y="1087" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">OFFSET</text> +<polygon points="453,1087 441,1092 441,1083" style="fill:rgb(0,0,0)"/> +<path d="M430,1087L447,1087" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M453,1102L502,1102L502,1072L453,1072Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="477" y="1087" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="525,1087 513,1092 513,1083" style="fill:rgb(0,0,0)"/> +<path d="M502,1087L519,1087" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M363,1140A15 15 0 0 0 378 1125A15 15 0 0 0 363 1110A15 15 0 0 0 348 1125A15 15 0 0 0 363 1140Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="363" y="1125" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="401,1125 390,1129 390,1121" style="fill:rgb(0,0,0)"/> +<path d="M378,1125L396,1125" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M401,1140L451,1140L451,1110L401,1110Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="426" y="1125" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="312,1057 301,1061 301,1053" style="fill:rgb(0,0,0)"/> +<path d="M289,1057L306,1057" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="348,1125 337,1129 337,1121" style="fill:rgb(0,0,0)"/> +<path d="M312,1057 L 320,1057 Q 327,1057 327,1072 L 327,1110 Q 327,1125 335,1125 L 342,1125" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="348,1087 337,1092 337,1083" style="fill:rgb(0,0,0)"/> +<path d="M312,1057 L 320,1057 Q 327,1057 327,1072 L 327,1072 Q 327,1087 335,1087 L 342,1087" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="525,1057 513,1061 513,1053" style="fill:rgb(0,0,0)"/> +<path d="M312,1057L519,1057" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="620,1155 609,1160 609,1151" style="fill:rgb(0,0,0)"/> +<path d="M525,1057 L 546,1057 Q 561,1057 561,1072 L 561,1140 Q 561,1155 576,1155 L 599,1155 L 614,1155" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="624" cy="1155" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M525,1087 L 546,1087 Q 561,1087 561,1095 L 561,1102" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="525,1125 513,1129 513,1121" style="fill:rgb(0,0,0)"/> +<path d="M451,1125L519,1125" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M525,1125 L 546,1125 Q 561,1125 561,1133 L 561,1140" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="525,1155 513,1160 513,1151" style="fill:rgb(0,0,0)"/> +<path d="M127,1042 L 127,1140 Q 127,1155 142,1155 L 504,1155 L 519,1155" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M525,1155L597,1155" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/common-table-expression.html">common-table-expression:</a></b> +<button id='x2263' onclick='hideorshow("x2263","x2264")'>show</button></p> + <div id='x2264' style='display:none;' class='imgcontainer'> + <div style="max-width:638px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 638.525 167.4"> +<circle cx="5" cy="29" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,29 20,33 20,24" style="fill:rgb(0,0,0)"/> +<path d="M9,29L26,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,44L122,44A15 15 0 0 0 137 29A15 15 0 0 0 122 14L47,14A15 15 0 0 0 32 29A15 15 0 0 0 47 44Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="85" y="29" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="160,29 149,33 149,24" style="fill:rgb(0,0,0)"/> +<path d="M137,29L155,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="196,29 185,33 185,24" style="fill:rgb(0,0,0)"/> +<path d="M160,29L191,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M211,44A15 15 0 0 0 227 29A15 15 0 0 0 211 14A15 15 0 0 0 196 29A15 15 0 0 0 211 44Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="211" y="29" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="250,29 238,33 238,24" style="fill:rgb(0,0,0)"/> +<path d="M227,29L244,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="286,29 274,33 274,24" style="fill:rgb(0,0,0)"/> +<path d="M250,29L280,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M301,44L395,44A15 15 0 0 0 410 29A15 15 0 0 0 395 14L301,14A15 15 0 0 0 286 29A15 15 0 0 0 301 44Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="348" y="29" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-name</text> +<polygon points="446,29 434,33 434,24" style="fill:rgb(0,0,0)"/> +<path d="M410,29L440,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,44A15 15 0 0 0 476 29A15 15 0 0 0 461 14A15 15 0 0 0 446 29A15 15 0 0 0 461 44Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="461" y="29" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="511,29 499,33 499,24" style="fill:rgb(0,0,0)"/> +<path d="M476,29L505,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,165L51,165A15 15 0 0 0 66 150A15 15 0 0 0 51 135L47,135A15 15 0 0 0 32 150A15 15 0 0 0 47 165Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="49" y="150" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<path d="M127,135L147,135A15 15 0 0 0 162 119A15 15 0 0 0 147 104L127,104A15 15 0 0 0 112 119A15 15 0 0 0 127 135Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="137" y="119" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<path d="M219,135L337,135A15 15 0 0 0 352 119A15 15 0 0 0 337 104L219,104A15 15 0 0 0 204 119A15 15 0 0 0 219 135Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="278" y="119" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">MATERIALIZED</text> +<path d="M162,119L204,119" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M410,165A15 15 0 0 0 425 150A15 15 0 0 0 410 135A15 15 0 0 0 395 150A15 15 0 0 0 410 165Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="410" y="150" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="448,150 437,154 437,145" style="fill:rgb(0,0,0)"/> +<path d="M425,150L442,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M448,165L552,165L552,135L448,135Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="500" y="150" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">select-stmt</text> +<polygon points="575,150 564,154 564,145" style="fill:rgb(0,0,0)"/> +<path d="M552,150L570,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M591,165A15 15 0 0 0 606 150A15 15 0 0 0 591 135A15 15 0 0 0 575 150A15 15 0 0 0 591 165Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="591" y="150" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="629,150 617,154 617,145" style="fill:rgb(0,0,0)"/> +<path d="M606,150L623,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="632" cy="150" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M348,82A15 15 0 0 0 363 66A15 15 0 0 0 348 51A15 15 0 0 0 333 66A15 15 0 0 0 348 82Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="348" y="66" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="363,66 374,62 374,71" style="fill:rgb(0,0,0)"/> +<path d="M410,29 L 417,29 Q 425,29 425,44 L 425,51 Q 425,66 410,66 L 384,66 L 369,66" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M333,66 L 278,66 Q 263,66 263,51 L 263,44 Q 263,29 270,29 L 278,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="66,93 78,89 78,97" style="fill:rgb(0,0,0)"/> +<path d="M511,29 L 516,29 Q 522,29 522,44 L 522,78 Q 522,93 507,93 L 87,93 L 72,93" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,150 20,154 20,145" style="fill:rgb(0,0,0)"/> +<path d="M66,93 L 30,93 Q 15,93 15,108 L 15,135 Q 15,150 20,150 L 26,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="85,150 73,154 73,145" style="fill:rgb(0,0,0)"/> +<path d="M66,150L79,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="112,119 101,124 101,115" style="fill:rgb(0,0,0)"/> +<path d="M85,150 L 89,150 Q 92,150 92,135 L 92,134 Q 92,119 99,119 L 106,119" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="204,119 192,124 192,115" style="fill:rgb(0,0,0)"/> +<path d="M66,150 L 147,150 Q 162,150 170,150 Q 177,150 177,135 L 177,134 Q 177,119 188,119 L 198,119" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="395,150 383,154 383,145" style="fill:rgb(0,0,0)"/> +<path d="M352,119 L 360,119 Q 367,119 367,134 L 367,135 Q 367,150 378,150 L 389,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,150L395,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="348,6 336,10 336,2" style="fill:rgb(0,0,0)"/> +<path d="M160,29 L 168,29 Q 175,29 175,17 Q 175,6 190,6 L 327,6 L 342,6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M348,6 L 473,6 Q 488,6 488,17 Q 488,29 495,29 L 503,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/compound-operator.html">compound-operator:</a></b> +<button id='x2265' onclick='hideorshow("x2265","x2266")'>show</button></p> + <div id='x2266' style='display:none;' class='imgcontainer'> + <div style="max-width:293px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 293.842 147.96"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="68,17 56,21 56,12" style="fill:rgb(0,0,0)"/> +<path d="M32,17L62,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M83,32L127,32A15 15 0 0 0 142 17A15 15 0 0 0 127 2L83,2A15 15 0 0 0 68 17A15 15 0 0 0 83 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="105" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNION</text> +<path d="M83,70L127,70A15 15 0 0 0 142 55L142,55A15 15 0 0 0 127 39L83,39A15 15 0 0 0 68 55L68,55A15 15 0 0 0 83 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="105" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNION</text> +<path d="M83,108L168,108A15 15 0 0 0 183 92A15 15 0 0 0 168 77L83,77A15 15 0 0 0 68 92A15 15 0 0 0 83 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="125" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">INTERSECT</text> +<path d="M83,145L135,145A15 15 0 0 0 150 130A15 15 0 0 0 135 115L83,115A15 15 0 0 0 68 130A15 15 0 0 0 83 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="109" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCEPT</text> +<polygon points="165,55 153,59 153,50" style="fill:rgb(0,0,0)"/> +<path d="M142,55L159,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M180,70L195,70A15 15 0 0 0 210 55L210,55A15 15 0 0 0 195 39L180,39A15 15 0 0 0 165 55L165,55A15 15 0 0 0 180 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="187" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ALL</text> +<polygon points="233,55 221,59 221,50" style="fill:rgb(0,0,0)"/> +<path d="M210,55L227,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="284,17 272,21 272,12" style="fill:rgb(0,0,0)"/> +<path d="M233,55 L 240,55 Q 248,55 248,40 L 248,32 Q 248,17 263,17 L 263,17 L 278,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="288" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="68,55 56,59 56,50" style="fill:rgb(0,0,0)"/> +<path d="M32,17 L 39,17 Q 47,17 47,32 L 47,40 Q 47,55 55,55 L 62,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M142,17L276,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="68,92 56,97 56,88" style="fill:rgb(0,0,0)"/> +<path d="M47,39 L 47,77 Q 47,92 55,92 L 62,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="233,92 221,97 221,88" style="fill:rgb(0,0,0)"/> +<path d="M183,92L227,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M233,92 L 240,92 Q 248,92 248,77 L 248,54 L 248,39" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="68,130 56,135 56,126" style="fill:rgb(0,0,0)"/> +<path d="M47,77 L 47,115 Q 47,130 55,130 L 62,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="233,130 221,135 221,126" style="fill:rgb(0,0,0)"/> +<path d="M150,130L227,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M233,130 L 240,130 Q 248,130 248,115 L 248,92 L 248,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/expr.html">expr:</a></b> +<button id='x2267' onclick='hideorshow("x2267","x2268")'>show</button></p> + <div id='x2268' style='display:none;' class='imgcontainer'> + <div style="max-width:963px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 963.96 1105.06"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,17 33,21 33,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L39,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,32L158,32L158,2L45,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="101" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">literal-value</text> +<polygon points="954,17 943,21 943,12" style="fill:rgb(0,0,0)"/> +<path d="M158,17L948,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="958" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,70L172,70A15 15 0 0 0 187 55L187,55A15 15 0 0 0 172 39L60,39A15 15 0 0 0 45 55L45,55A15 15 0 0 0 60 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="116" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">bind-parameter</text> +<polygon points="916,55 905,59 905,50" style="fill:rgb(0,0,0)"/> +<path d="M187,55L910,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,55 L 924,55 Q 931,55 931,47 L 931,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,55 33,59 33,50" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,40 Q 24,55 31,55 L 39,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,130L156,130A15 15 0 0 0 171 115A15 15 0 0 0 156 100L60,100A15 15 0 0 0 45 115A15 15 0 0 0 60 130Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="108" y="115" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">schema-name</text> +<polygon points="195,115 183,119 183,111" style="fill:rgb(0,0,0)"/> +<path d="M171,115L189,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M210,130A15 15 0 0 0 225 115A15 15 0 0 0 210 100A15 15 0 0 0 195 115A15 15 0 0 0 210 130Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="210" y="115" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">.</text> +<polygon points="261,115 249,119 249,111" style="fill:rgb(0,0,0)"/> +<path d="M225,115L255,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M276,130L351,130A15 15 0 0 0 366 115A15 15 0 0 0 351 100L276,100A15 15 0 0 0 261 115A15 15 0 0 0 276 130Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="313" y="115" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="389,115 378,119 378,111" style="fill:rgb(0,0,0)"/> +<path d="M366,115L383,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M404,130A15 15 0 0 0 419 115A15 15 0 0 0 404 100A15 15 0 0 0 389 115A15 15 0 0 0 404 130Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="404" y="115" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">.</text> +<polygon points="455,115 444,119 444,111" style="fill:rgb(0,0,0)"/> +<path d="M419,115L450,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M471,130L565,130A15 15 0 0 0 580 115A15 15 0 0 0 565 100L471,100A15 15 0 0 0 455 115A15 15 0 0 0 471 130Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="518" y="115" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-name</text> +<polygon points="916,115 905,119 905,111" style="fill:rgb(0,0,0)"/> +<path d="M580,115L910,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,115 L 924,115 Q 931,115 931,108 L 931,100" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,115 33,119 33,111" style="fill:rgb(0,0,0)"/> +<path d="M24,100 L 24,108 Q 24,115 31,115 L 39,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="108,89 97,93 97,84" style="fill:rgb(0,0,0)"/> +<path d="M24,74 L 24,81 Q 24,89 39,89 L 87,89 L 102,89" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="313,89 302,93 302,84" style="fill:rgb(0,0,0)"/> +<path d="M108,89 L 129,89 Q 144,89 159,89 L 293,89 L 308,89" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M313,89 L 414,89 Q 429,89 429,102 Q 429,115 436,115 L 444,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M223,89 L 230,89 Q 238,89 238,102 Q 238,115 245,115 L 253,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,168L168,168A15 15 0 0 0 183 153A15 15 0 0 0 168 138L60,138A15 15 0 0 0 45 153A15 15 0 0 0 60 168Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="114" y="153" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">unary-operator</text> +<polygon points="206,153 194,157 194,149" style="fill:rgb(0,0,0)"/> +<path d="M183,153L200,153" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M206,168L255,168L255,138L206,138Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="231" y="153" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="916,153 905,157 905,149" style="fill:rgb(0,0,0)"/> +<path d="M255,153L910,153" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,153 L 924,153 Q 931,153 931,145 L 931,138" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,153 33,157 33,149" style="fill:rgb(0,0,0)"/> +<path d="M24,138 L 24,145 Q 24,153 31,153 L 39,153" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,206L94,206L94,176L45,176Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="191" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="117,191 106,195 106,186" style="fill:rgb(0,0,0)"/> +<path d="M94,191L111,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M132,206L245,206A15 15 0 0 0 261 191A15 15 0 0 0 245 176L132,176A15 15 0 0 0 117 191A15 15 0 0 0 132 206Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="189" y="191" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">binary-operator</text> +<polygon points="284,191 272,195 272,186" style="fill:rgb(0,0,0)"/> +<path d="M261,191L278,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M284,206L333,206L333,176L284,176Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="308" y="191" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="916,191 905,195 905,186" style="fill:rgb(0,0,0)"/> +<path d="M333,191L910,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,191 L 924,191 Q 931,191 931,183 L 931,176" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,191 33,195 33,186" style="fill:rgb(0,0,0)"/> +<path d="M24,176 L 24,183 Q 24,191 31,191 L 39,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,266L162,266A15 15 0 0 0 177 251A15 15 0 0 0 162 236L60,236A15 15 0 0 0 45 251A15 15 0 0 0 60 266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="111" y="251" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">function-name</text> +<polygon points="194,251 183,255 183,247" style="fill:rgb(0,0,0)"/> +<path d="M177,251L188,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M209,266A15 15 0 0 0 224 251A15 15 0 0 0 209 236A15 15 0 0 0 194 251A15 15 0 0 0 209 266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="209" y="251" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="260,251 249,255 249,247" style="fill:rgb(0,0,0)"/> +<path d="M224,251L255,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M275,266L344,266A15 15 0 0 0 359 251A15 15 0 0 0 344 236L275,236A15 15 0 0 0 260 251A15 15 0 0 0 275 266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="310" y="251" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">DISTINCT</text> +<polygon points="424,251 412,255 412,247" style="fill:rgb(0,0,0)"/> +<path d="M359,251L418,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M424,266L473,266L473,236L424,236Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="448" y="251" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="527,251 515,255 515,247" style="fill:rgb(0,0,0)"/> +<path d="M473,251L521,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M542,266A15 15 0 0 0 557 251A15 15 0 0 0 542 236A15 15 0 0 0 527 251A15 15 0 0 0 542 266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="542" y="251" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="595,281 584,286 584,277" style="fill:rgb(0,0,0)"/> +<path d="M557,251 L 565,251 Q 572,251 572,266 L 572,266 Q 572,281 581,281 L 589,281" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M595,297L707,297L707,266L595,266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="651" y="281" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">filter-clause</text> +<polygon points="745,251 734,255 734,247" style="fill:rgb(0,0,0)"/> +<path d="M707,281 L 715,281 Q 722,281 722,266 L 722,266 Q 722,251 731,251 L 739,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="783,281 772,286 772,277" style="fill:rgb(0,0,0)"/> +<path d="M745,251 L 753,251 Q 760,251 760,266 L 760,266 Q 760,281 769,281 L 777,281" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M783,297L891,297L891,266L783,266Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="837" y="281" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">over-clause</text> +<polygon points="916,281 905,286 905,277" style="fill:rgb(0,0,0)"/> +<path d="M891,281L910,281" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,281 L 924,281 Q 931,281 931,274 L 931,266" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,251 33,255 33,247" style="fill:rgb(0,0,0)"/> +<path d="M24,236 L 24,244 Q 24,251 31,251 L 39,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="651,251 640,255 640,247" style="fill:rgb(0,0,0)"/> +<path d="M557,251L645,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M651,251L734,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="916,251 905,255 905,247" style="fill:rgb(0,0,0)"/> +<path d="M745,251L910,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,251 L 924,251 Q 931,251 931,244 L 931,236" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M448,228A15 15 0 0 0 463 213A15 15 0 0 0 448 198A15 15 0 0 0 433 213A15 15 0 0 0 448 228Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="448" y="213" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="463,213 475,209 475,218" style="fill:rgb(0,0,0)"/> +<path d="M473,251 L 480,251 Q 488,251 488,236 L 488,228 Q 488,213 478,213 L 469,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M433,213 L 416,213 Q 401,213 401,228 L 401,236 Q 401,251 408,251 L 416,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="310,221 298,225 298,217" style="fill:rgb(0,0,0)"/> +<path d="M224,251 L 232,251 Q 239,251 239,236 L 239,236 Q 239,221 254,221 L 289,221 L 304,221" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="397,251 385,255 385,247" style="fill:rgb(0,0,0)"/> +<path d="M310,221 L 355,221 Q 370,221 370,236 L 370,236 Q 370,251 380,251 L 391,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M275,304A15 15 0 0 0 291 289A15 15 0 0 0 275 274A15 15 0 0 0 260 289A15 15 0 0 0 275 304Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="275" y="289" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">*</text> +<polygon points="260,289 249,293 249,285" style="fill:rgb(0,0,0)"/> +<path d="M224,251 L 232,251 Q 239,251 239,266 L 239,274 Q 239,289 247,289 L 255,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="489,289 477,293 477,285" style="fill:rgb(0,0,0)"/> +<path d="M291,289L483,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M489,289 L 496,289 Q 504,289 504,274 L 504,266 Q 504,251 511,251 L 519,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="260,319 249,324 249,315" style="fill:rgb(0,0,0)"/> +<path d="M239,274 L 239,304 Q 239,319 247,319 L 255,319" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="489,319 477,324 477,315" style="fill:rgb(0,0,0)"/> +<path d="M260,319L483,319" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M489,319 L 496,319 Q 504,319 504,304 L 504,289 L 504,274" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,357A15 15 0 0 0 75 342A15 15 0 0 0 60 327A15 15 0 0 0 45 342A15 15 0 0 0 60 357Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="60" y="342" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="111,342 100,346 100,338" style="fill:rgb(0,0,0)"/> +<path d="M75,342L105,342" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M111,357L160,357L160,327L111,327Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="136" y="342" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="196,342 185,346 185,338" style="fill:rgb(0,0,0)"/> +<path d="M160,342L191,342" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M211,357A15 15 0 0 0 227 342A15 15 0 0 0 211 327A15 15 0 0 0 196 342A15 15 0 0 0 211 357Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="211" y="342" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="916,342 905,346 905,338" style="fill:rgb(0,0,0)"/> +<path d="M227,342L910,342" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,342 L 924,342 Q 931,342 931,334 L 931,327" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,342 33,346 33,338" style="fill:rgb(0,0,0)"/> +<path d="M24,327 L 24,334 Q 24,342 31,342 L 39,342" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M136,319A15 15 0 0 0 151 304A15 15 0 0 0 136 289A15 15 0 0 0 121 304A15 15 0 0 0 136 319Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="136" y="304" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="151,304 162,300 162,308" style="fill:rgb(0,0,0)"/> +<path d="M160,342 L 168,342 Q 175,342 175,327 L 175,319 Q 175,304 166,304 L 157,304" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M121,304 L 103,304 Q 88,304 88,319 L 88,327 Q 88,342 96,342 L 103,342" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,395L88,395A15 15 0 0 0 103 380A15 15 0 0 0 88 365L60,365A15 15 0 0 0 45 380A15 15 0 0 0 60 395Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="74" y="380" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CAST</text> +<polygon points="126,380 114,384 114,375" style="fill:rgb(0,0,0)"/> +<path d="M103,380L120,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M141,395A15 15 0 0 0 156 380A15 15 0 0 0 141 365A15 15 0 0 0 126 380A15 15 0 0 0 141 395Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="141" y="380" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="179,380 168,384 168,375" style="fill:rgb(0,0,0)"/> +<path d="M156,380L173,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M179,395L228,395L228,365L179,365Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="204" y="380" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="251,380 240,384 240,375" style="fill:rgb(0,0,0)"/> +<path d="M228,380L246,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M267,395L271,395A15 15 0 0 0 286 380A15 15 0 0 0 271 365L267,365A15 15 0 0 0 251 380A15 15 0 0 0 267 395Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="269" y="380" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="309,380 297,384 297,375" style="fill:rgb(0,0,0)"/> +<path d="M286,380L303,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M309,395L408,395L408,365L309,365Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="358" y="380" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">type-name</text> +<polygon points="431,380 419,384 419,375" style="fill:rgb(0,0,0)"/> +<path d="M408,380L425,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M446,395A15 15 0 0 0 461 380A15 15 0 0 0 446 365A15 15 0 0 0 431 380A15 15 0 0 0 446 395Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="446" y="380" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="916,380 905,384 905,375" style="fill:rgb(0,0,0)"/> +<path d="M461,380L910,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,380 L 924,380 Q 931,380 931,372 L 931,365" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,380 33,384 33,375" style="fill:rgb(0,0,0)"/> +<path d="M24,365 L 24,372 Q 24,380 31,380 L 39,380" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,433L94,433L94,402L45,402Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="417" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="117,417 106,422 106,413" style="fill:rgb(0,0,0)"/> +<path d="M94,417L111,417" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M132,433L196,433A15 15 0 0 0 211 417A15 15 0 0 0 196 402L132,402A15 15 0 0 0 117 417A15 15 0 0 0 132 433Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="164" y="417" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">COLLATE</text> +<polygon points="234,417 223,422 223,413" style="fill:rgb(0,0,0)"/> +<path d="M211,417L229,417" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M250,433L355,433A15 15 0 0 0 370 417A15 15 0 0 0 355 402L250,402A15 15 0 0 0 234 417A15 15 0 0 0 250 433Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="302" y="417" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">collation-name</text> +<polygon points="916,417 905,422 905,413" style="fill:rgb(0,0,0)"/> +<path d="M370,417L910,417" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,417 L 924,417 Q 931,417 931,410 L 931,402" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,417 33,422 33,413" style="fill:rgb(0,0,0)"/> +<path d="M24,402 L 24,410 Q 24,417 31,417 L 39,417" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,470L94,470L94,440L45,440Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="455" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="130,455 119,460 119,451" style="fill:rgb(0,0,0)"/> +<path d="M94,455L124,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M145,470L165,470A15 15 0 0 0 180 455A15 15 0 0 0 165 440L145,440A15 15 0 0 0 130 455A15 15 0 0 0 145 470Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="155" y="455" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="234,455 223,460 223,451" style="fill:rgb(0,0,0)"/> +<path d="M180,455L229,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M250,470L273,470A15 15 0 0 0 288 455A15 15 0 0 0 273 440L250,440A15 15 0 0 0 234 455A15 15 0 0 0 250 470Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="261" y="455" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">LIKE</text> +<path d="M250,508L279,508A15 15 0 0 0 294 493A15 15 0 0 0 279 478L250,478A15 15 0 0 0 234 493A15 15 0 0 0 250 508Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="264" y="493" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GLOB</text> +<path d="M250,546L302,546A15 15 0 0 0 317 531A15 15 0 0 0 302 516L250,516A15 15 0 0 0 234 531A15 15 0 0 0 250 546Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="276" y="531" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">REGEXP</text> +<path d="M250,584L297,584A15 15 0 0 0 313 569A15 15 0 0 0 297 554L250,554A15 15 0 0 0 234 569A15 15 0 0 0 250 584Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="274" y="569" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">MATCH</text> +<path d="M378,546L427,546L427,516L378,516Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="403" y="531" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<path d="M378,470L427,470L427,440L378,440Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="403" y="455" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="465,486 454,490 454,481" style="fill:rgb(0,0,0)"/> +<path d="M427,455 L 435,455 Q 442,455 442,470 L 442,471 Q 442,486 451,486 L 460,486" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M480,501L532,501A15 15 0 0 0 547 486A15 15 0 0 0 532 470L480,470A15 15 0 0 0 465 486A15 15 0 0 0 480 501Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="506" y="486" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ESCAPE</text> +<polygon points="570,486 559,490 559,481" style="fill:rgb(0,0,0)"/> +<path d="M547,486L565,486" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M570,501L620,501L620,470L570,470Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="595" y="486" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="671,455 659,460 659,451" style="fill:rgb(0,0,0)"/> +<path d="M620,486 L 627,486 Q 635,486 635,471 L 635,470 Q 635,455 650,455 L 650,455 L 665,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="916,455 905,460 905,451" style="fill:rgb(0,0,0)"/> +<path d="M671,455L910,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,455 L 924,455 Q 931,455 931,448 L 931,440" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,455 33,460 33,451" style="fill:rgb(0,0,0)"/> +<path d="M24,440 L 24,448 Q 24,455 31,455 L 39,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M100,455 L 108,455 Q 115,455 115,470 L 115,471 Q 115,486 130,486 L 177,486 Q 192,486 192,471 L 192,470 Q 192,455 199,455 L 207,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="234,569 223,573 223,564" style="fill:rgb(0,0,0)"/> +<path d="M196,455 L 204,455 Q 211,455 211,470 L 211,554 Q 211,569 220,569 L 229,569" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="234,493 223,497 223,489" style="fill:rgb(0,0,0)"/> +<path d="M211,478 L 211,486 Q 211,493 220,493 L 229,493" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="234,531 223,535 223,527" style="fill:rgb(0,0,0)"/> +<path d="M211,516 L 211,523 Q 211,531 220,531 L 229,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="378,455 367,460 367,451" style="fill:rgb(0,0,0)"/> +<path d="M288,455L372,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="340,569 329,573 329,564" style="fill:rgb(0,0,0)"/> +<path d="M313,569L334,569" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="378,531 367,535 367,527" style="fill:rgb(0,0,0)"/> +<path d="M340,569 L 348,569 Q 355,569 355,554 L 355,546 Q 355,531 364,531 L 372,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="340,531 329,535 329,527" style="fill:rgb(0,0,0)"/> +<path d="M317,531L334,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M340,531L378,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="340,493 329,497 329,489" style="fill:rgb(0,0,0)"/> +<path d="M294,493L334,493" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M340,493 L 348,493 Q 355,493 355,508 L 355,516 Q 355,531 367,531 L 378,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="506,455 495,460 495,451" style="fill:rgb(0,0,0)"/> +<path d="M427,455L501,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M506,455L659,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="547,531 536,535 536,527" style="fill:rgb(0,0,0)"/> +<path d="M427,531L542,531" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M547,531 L 656,531 Q 671,531 671,516 L 671,470 Q 671,455 686,455 L 692,455 L 707,455" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,622L94,622L94,591L45,591Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="606" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="130,606 119,611 119,602" style="fill:rgb(0,0,0)"/> +<path d="M94,606L124,606" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M145,622L194,622A15 15 0 0 0 209 606A15 15 0 0 0 194 591L145,591A15 15 0 0 0 130 606A15 15 0 0 0 145 622Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="170" y="606" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ISNULL</text> +<polygon points="916,606 905,611 905,602" style="fill:rgb(0,0,0)"/> +<path d="M209,606L910,606" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,606 L 924,606 Q 931,606 931,599 L 931,591" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,606 33,611 33,602" style="fill:rgb(0,0,0)"/> +<path d="M24,591 L 24,599 Q 24,606 31,606 L 39,606" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M145,659L215,659A15 15 0 0 0 230 644A15 15 0 0 0 215 629L145,629A15 15 0 0 0 130 644A15 15 0 0 0 145 659Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="180" y="644" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOTNULL</text> +<path d="M145,697L165,697A15 15 0 0 0 180 682A15 15 0 0 0 165 667L145,667A15 15 0 0 0 130 682A15 15 0 0 0 145 697Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="155" y="682" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="203,682 192,686 192,678" style="fill:rgb(0,0,0)"/> +<path d="M180,682L198,682" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M219,697L250,697A15 15 0 0 0 265 682A15 15 0 0 0 250 667L219,667A15 15 0 0 0 203 682A15 15 0 0 0 219 697Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="234" y="682" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NULL</text> +<polygon points="288,682 276,686 276,678" style="fill:rgb(0,0,0)"/> +<path d="M265,682L282,682" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="339,606 327,611 327,602" style="fill:rgb(0,0,0)"/> +<path d="M288,682 L 295,682 Q 303,682 303,667 L 303,621 Q 303,606 318,606 L 318,606 L 333,606" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="288,644 276,649 276,640" style="fill:rgb(0,0,0)"/> +<path d="M230,644L282,644" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M288,644 L 295,644 Q 303,644 303,637 L 303,629" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="130,682 119,686 119,678" style="fill:rgb(0,0,0)"/> +<path d="M94,606 L 102,606 Q 109,606 109,621 L 109,667 Q 109,682 117,682 L 124,682" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="130,644 119,649 119,640" style="fill:rgb(0,0,0)"/> +<path d="M94,606 L 102,606 Q 109,606 109,621 L 109,629 Q 109,644 117,644 L 124,644" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,735L94,735L94,705L45,705Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="117,720 106,724 106,716" style="fill:rgb(0,0,0)"/> +<path d="M94,720L111,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M132,735A15 15 0 0 0 147 720A15 15 0 0 0 132 705A15 15 0 0 0 117 720A15 15 0 0 0 132 735Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="132" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">IS</text> +<polygon points="183,720 172,724 172,716" style="fill:rgb(0,0,0)"/> +<path d="M147,720L178,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M198,735L219,735A15 15 0 0 0 234 720A15 15 0 0 0 219 705L198,705A15 15 0 0 0 183 720A15 15 0 0 0 198 735Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="209" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="270,720 258,724 258,716" style="fill:rgb(0,0,0)"/> +<path d="M234,720L264,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="306,720 294,724 294,716" style="fill:rgb(0,0,0)"/> +<path d="M270,720L300,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M321,735L389,735A15 15 0 0 0 404 720A15 15 0 0 0 389 705L321,705A15 15 0 0 0 306 720A15 15 0 0 0 321 735Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="355" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">DISTINCT</text> +<polygon points="440,720 429,724 429,716" style="fill:rgb(0,0,0)"/> +<path d="M404,720L434,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M455,735L490,735A15 15 0 0 0 505 720A15 15 0 0 0 490 705L455,705A15 15 0 0 0 440 720A15 15 0 0 0 455 735Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="473" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FROM</text> +<polygon points="541,720 530,724 530,716" style="fill:rgb(0,0,0)"/> +<path d="M505,720L535,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M541,735L590,735L590,705L541,705Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="566" y="720" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="916,720 905,724 905,716" style="fill:rgb(0,0,0)"/> +<path d="M590,720L910,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,720 L 924,720 Q 931,720 931,712 L 931,705" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,720 33,724 33,716" style="fill:rgb(0,0,0)"/> +<path d="M24,705 L 24,712 Q 24,720 31,720 L 39,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M149,720 L 156,720 Q 164,720 164,732 Q 164,744 179,744 L 230,744 Q 245,744 245,732 Q 245,720 253,720 L 260,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M271,720 L 279,720 Q 286,720 286,732 Q 286,744 301,744 L 502,744 Q 517,744 517,732 Q 517,720 524,720 L 532,720" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,780L94,780L94,750L45,750Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="130,765 119,770 119,761" style="fill:rgb(0,0,0)"/> +<path d="M94,765L124,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M145,780L165,780A15 15 0 0 0 180 765A15 15 0 0 0 165 750L145,750A15 15 0 0 0 130 765A15 15 0 0 0 145 780Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="155" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="216,765 205,770 205,761" style="fill:rgb(0,0,0)"/> +<path d="M180,765L211,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M232,780L304,780A15 15 0 0 0 319 765A15 15 0 0 0 304 750L232,750A15 15 0 0 0 216 765A15 15 0 0 0 232 780Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="268" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BETWEEN</text> +<polygon points="342,765 331,770 331,761" style="fill:rgb(0,0,0)"/> +<path d="M319,765L336,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M342,780L391,780L391,750L342,750Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="367" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="414,765 403,770 403,761" style="fill:rgb(0,0,0)"/> +<path d="M391,765L409,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M430,780L450,780A15 15 0 0 0 465 765A15 15 0 0 0 450 750L430,750A15 15 0 0 0 414 765A15 15 0 0 0 430 780Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="440" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AND</text> +<polygon points="488,765 477,770 477,761" style="fill:rgb(0,0,0)"/> +<path d="M465,765L483,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M488,780L538,780L538,750L488,750Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="513" y="765" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="916,765 905,770 905,761" style="fill:rgb(0,0,0)"/> +<path d="M538,765L910,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,765 L 924,765 Q 931,765 931,758 L 931,750" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,765 33,770 33,761" style="fill:rgb(0,0,0)"/> +<path d="M24,750 L 24,758 Q 24,765 31,765 L 39,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M95,765 L 103,765 Q 110,765 110,777 Q 110,789 125,789 L 177,789 Q 192,789 192,777 Q 192,765 199,765 L 207,765" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,833L94,833L94,803L45,803Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="818" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="130,818 119,822 119,814" style="fill:rgb(0,0,0)"/> +<path d="M94,818L124,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M145,833L165,833A15 15 0 0 0 180 818A15 15 0 0 0 165 803L145,803A15 15 0 0 0 130 818A15 15 0 0 0 145 833Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="155" y="818" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="216,818 205,822 205,814" style="fill:rgb(0,0,0)"/> +<path d="M180,818L211,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M232,833L234,833A15 15 0 0 0 249 818A15 15 0 0 0 234 803L232,803A15 15 0 0 0 216 818A15 15 0 0 0 232 833Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="233" y="818" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">IN</text> +<polygon points="285,818 273,822 273,814" style="fill:rgb(0,0,0)"/> +<path d="M249,818L279,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M300,833A15 15 0 0 0 315 818A15 15 0 0 0 300 803A15 15 0 0 0 285 818A15 15 0 0 0 300 833Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="300" y="818" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="351,818 340,822 340,814" style="fill:rgb(0,0,0)"/> +<path d="M315,818L345,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,833L455,833L455,803L351,803Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="403" y="818" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">select-stmt</text> +<polygon points="491,818 480,822 480,814" style="fill:rgb(0,0,0)"/> +<path d="M455,818L486,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M507,833A15 15 0 0 0 522 818A15 15 0 0 0 507 803A15 15 0 0 0 491 818A15 15 0 0 0 507 833Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="507" y="818" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="916,818 905,822 905,814" style="fill:rgb(0,0,0)"/> +<path d="M522,818L910,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,818 L 924,818 Q 931,818 931,811 L 931,803" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,818 33,822 33,814" style="fill:rgb(0,0,0)"/> +<path d="M24,803 L 24,811 Q 24,818 31,818 L 39,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M95,818 L 103,818 Q 110,818 110,830 Q 110,842 125,842 L 177,842 Q 192,842 192,830 Q 192,818 199,818 L 207,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M317,818 L 324,818 Q 332,818 332,806 Q 332,794 347,794 L 452,794 Q 467,794 467,806 Q 467,818 475,818 L 482,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M379,871L428,871L428,841L379,841Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="403" y="856" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="379,856 367,860 367,852" style="fill:rgb(0,0,0)"/> +<path d="M317,818 L 324,818 Q 332,818 332,833 L 332,841 Q 332,856 347,856 L 358,856 L 373,856" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M428,856 L 452,856 Q 467,856 467,841 L 467,833 Q 467,818 475,818 L 482,818" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M403,909A15 15 0 0 0 418 894A15 15 0 0 0 403 879A15 15 0 0 0 388 894A15 15 0 0 0 403 909Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="403" y="894" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="418,894 430,889 430,898" style="fill:rgb(0,0,0)"/> +<path d="M428,856 L 435,856 Q 443,856 443,871 L 443,879 Q 443,894 434,894 L 424,894" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M388,894 L 371,894 Q 356,894 356,879 L 356,871 Q 356,856 363,856 L 371,856" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M300,962L396,962A15 15 0 0 0 412 947A15 15 0 0 0 396 932L300,932A15 15 0 0 0 285 947A15 15 0 0 0 300 962Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="348" y="947" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">schema-name</text> +<polygon points="429,947 417,951 417,942" style="fill:rgb(0,0,0)"/> +<path d="M412,947L423,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M444,962A15 15 0 0 0 459 947A15 15 0 0 0 444 932A15 15 0 0 0 429 947A15 15 0 0 0 444 962Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="444" y="947" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">.</text> +<polygon points="513,947 502,951 502,942" style="fill:rgb(0,0,0)"/> +<path d="M459,947L507,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M528,962L627,962A15 15 0 0 0 642 947A15 15 0 0 0 627 932L528,932A15 15 0 0 0 513 947A15 15 0 0 0 528 962Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="577" y="947" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-function</text> +<polygon points="659,947 647,951 647,942" style="fill:rgb(0,0,0)"/> +<path d="M642,947L653,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M674,962A15 15 0 0 0 689 947A15 15 0 0 0 674 932A15 15 0 0 0 659 947A15 15 0 0 0 674 962Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="674" y="947" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="734,947 723,951 723,942" style="fill:rgb(0,0,0)"/> +<path d="M689,947L728,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M734,962L783,962L783,932L734,932Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="759" y="947" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="828,947 817,951 817,942" style="fill:rgb(0,0,0)"/> +<path d="M783,947L823,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M844,962A15 15 0 0 0 859 947A15 15 0 0 0 844 932A15 15 0 0 0 828 947A15 15 0 0 0 844 962Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="844" y="947" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="916,947 905,951 905,942" style="fill:rgb(0,0,0)"/> +<path d="M859,947L910,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,947 L 924,947 Q 931,947 931,939 L 931,932" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M528,901L603,901A15 15 0 0 0 619 886A15 15 0 0 0 603 871L528,871A15 15 0 0 0 513 886A15 15 0 0 0 528 901Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="566" y="886" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="916,886 905,891 905,882" style="fill:rgb(0,0,0)"/> +<path d="M619,886L910,886" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,886 L 924,886 Q 931,886 931,879 L 931,871" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="513,886 502,891 502,882" style="fill:rgb(0,0,0)"/> +<path d="M475,947 L 483,947 Q 490,947 490,932 L 490,901 Q 490,886 499,886 L 507,886" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M759,929A15 15 0 0 0 774 913A15 15 0 0 0 759 898A15 15 0 0 0 744 913A15 15 0 0 0 759 929Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="759" y="913" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="774,913 785,909 785,918" style="fill:rgb(0,0,0)"/> +<path d="M783,947 L 791,947 Q 798,947 798,932 L 798,928 Q 798,913 789,913 L 780,913" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M744,913 L 726,913 Q 711,913 711,928 L 711,932 Q 711,947 719,947 L 726,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M689,947 L 697,947 Q 704,947 704,957 Q 704,968 719,968 L 790,968 Q 805,968 805,957 Q 805,947 813,947 L 820,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="285,947 273,951 273,942" style="fill:rgb(0,0,0)"/> +<path d="M249,818 L 256,818 Q 264,818 264,833 L 264,932 Q 264,947 272,947 L 279,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="423,918 412,922 412,914" style="fill:rgb(0,0,0)"/> +<path d="M264,903 L 264,910 Q 264,918 279,918 L 402,918 L 417,918" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M423,918 L 456,918 Q 471,918 471,932 Q 471,947 478,947 L 486,947" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,1007L80,1007A15 15 0 0 0 95 992A15 15 0 0 0 80 977L60,977A15 15 0 0 0 45 992A15 15 0 0 0 60 1007Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="70" y="992" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="131,992 120,996 120,988" style="fill:rgb(0,0,0)"/> +<path d="M95,992L125,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M146,1007L191,1007A15 15 0 0 0 206 992A15 15 0 0 0 191 977L146,977A15 15 0 0 0 131 992A15 15 0 0 0 146 1007Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="169" y="992" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXISTS</text> +<polygon points="242,992 231,996 231,988" style="fill:rgb(0,0,0)"/> +<path d="M206,992L236,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M257,1007A15 15 0 0 0 272 992A15 15 0 0 0 257 977A15 15 0 0 0 242 992A15 15 0 0 0 257 1007Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="257" y="992" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="295,992 284,996 284,988" style="fill:rgb(0,0,0)"/> +<path d="M272,992L290,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M295,1007L400,1007L400,977L295,977Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="347" y="992" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">select-stmt</text> +<polygon points="423,992 411,996 411,988" style="fill:rgb(0,0,0)"/> +<path d="M400,992L417,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M438,1007A15 15 0 0 0 453 992A15 15 0 0 0 438 977A15 15 0 0 0 423 992A15 15 0 0 0 438 1007Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="438" y="992" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="916,992 905,996 905,988" style="fill:rgb(0,0,0)"/> +<path d="M453,992L910,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,992 L 924,992 Q 931,992 931,985 L 931,977" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,992 33,996 33,988" style="fill:rgb(0,0,0)"/> +<path d="M24,977 L 24,984 Q 24,992 31,992 L 39,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="70,966 59,970 59,961" style="fill:rgb(0,0,0)"/> +<path d="M24,951 L 24,958 Q 24,966 39,966 L 49,966 L 64,966" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M70,966 L 201,966 Q 216,966 216,979 Q 216,992 223,992 L 231,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M93,966 L 101,966 Q 108,966 108,979 Q 108,992 116,992 L 123,992" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,1045L89,1045A15 15 0 0 0 104 1030A15 15 0 0 0 89 1015L60,1015A15 15 0 0 0 45 1030A15 15 0 0 0 60 1045Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="74" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CASE</text> +<polygon points="140,1030 128,1034 128,1026" style="fill:rgb(0,0,0)"/> +<path d="M104,1030L134,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M140,1045L189,1045L189,1015L140,1015Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="164" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="243,1030 232,1034 232,1026" style="fill:rgb(0,0,0)"/> +<path d="M189,1030L237,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M258,1045L298,1045A15 15 0 0 0 313 1030A15 15 0 0 0 298 1015L258,1015A15 15 0 0 0 243 1030A15 15 0 0 0 258 1045Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="278" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WHEN</text> +<polygon points="336,1030 324,1034 324,1026" style="fill:rgb(0,0,0)"/> +<path d="M313,1030L330,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M336,1045L385,1045L385,1015L336,1015Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="360" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="408,1030 396,1034 396,1026" style="fill:rgb(0,0,0)"/> +<path d="M385,1030L402,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M423,1045L456,1045A15 15 0 0 0 472 1030A15 15 0 0 0 456 1015L423,1015A15 15 0 0 0 408 1030A15 15 0 0 0 423 1045Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="440" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">THEN</text> +<polygon points="495,1030 483,1034 483,1026" style="fill:rgb(0,0,0)"/> +<path d="M472,1030L489,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M495,1045L544,1045L544,1015L495,1015Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="519" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="616,1030 604,1034 604,1026" style="fill:rgb(0,0,0)"/> +<path d="M544,1030L610,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M631,1045L658,1045A15 15 0 0 0 673 1030A15 15 0 0 0 658 1015L631,1015A15 15 0 0 0 616 1030A15 15 0 0 0 631 1045Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="645" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ELSE</text> +<polygon points="696,1030 685,1034 685,1026" style="fill:rgb(0,0,0)"/> +<path d="M673,1030L691,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M696,1045L746,1045L746,1015L696,1015Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="721" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="782,1030 770,1034 770,1026" style="fill:rgb(0,0,0)"/> +<path d="M746,1030L776,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M797,1045L818,1045A15 15 0 0 0 833 1030A15 15 0 0 0 818 1015L797,1015A15 15 0 0 0 782 1030A15 15 0 0 0 797 1045Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="807" y="1030" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">END</text> +<polygon points="916,1030 905,1034 905,1026" style="fill:rgb(0,0,0)"/> +<path d="M833,1030L910,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,1030 L 924,1030 Q 931,1030 931,1022 L 931,1015" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,1030 33,1034 33,1026" style="fill:rgb(0,0,0)"/> +<path d="M24,1015 L 24,1022 Q 24,1030 31,1030 L 39,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M104,1030 L 111,1030 Q 119,1030 119,1043 Q 119,1057 134,1057 L 186,1057 Q 201,1057 201,1043 Q 201,1030 208,1030 L 216,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="360,1057 372,1053 372,1061" style="fill:rgb(0,0,0)"/> +<path d="M544,1030 L 551,1030 Q 559,1030 559,1043 Q 559,1057 544,1057 L 381,1057 L 366,1057" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M360,1057 L 235,1057 Q 220,1057 220,1043 Q 220,1030 227,1030 L 235,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M578,1030 L 585,1030 Q 593,1030 593,1043 Q 593,1057 608,1057 L 742,1057 Q 757,1057 757,1043 Q 757,1030 765,1030 L 772,1030" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,1102L173,1102L173,1072L45,1072Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="109" y="1087" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">raise-function</text> +<polygon points="916,1087 905,1092 905,1083" style="fill:rgb(0,0,0)"/> +<path d="M173,1087L910,1087" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M916,1087 L 924,1087 Q 931,1087 931,1072 L 931,32 Q 931,17 939,17 L 946,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,1087 33,1092 33,1083" style="fill:rgb(0,0,0)"/> +<path d="M24,39 L 24,1072 Q 24,1087 31,1087 L 39,1087" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/filter-clause.html">filter-clause:</a></b> +<button id='x2269' onclick='hideorshow("x2269","x2270")'>show</button></p> + <div id='x2270' style='display:none;' class='imgcontainer'> + <div style="max-width:422px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 422.381 34.56"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,32L93,32A15 15 0 0 0 108 17A15 15 0 0 0 93 2L47,2A15 15 0 0 0 32 17A15 15 0 0 0 47 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="70" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FILTER</text> +<polygon points="131,17 119,21 119,12" style="fill:rgb(0,0,0)"/> +<path d="M108,17L125,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M146,32L146,32A15 15 0 0 0 161 17A15 15 0 0 0 146 2L146,2A15 15 0 0 0 131 17A15 15 0 0 0 146 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="146" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="184,17 173,21 173,12" style="fill:rgb(0,0,0)"/> +<path d="M161,17L178,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M199,32L249,32A15 15 0 0 0 264 17A15 15 0 0 0 249 2L199,2A15 15 0 0 0 184 17A15 15 0 0 0 199 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="224" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">WHERE</text> +<polygon points="287,17 275,21 275,12" style="fill:rgb(0,0,0)"/> +<path d="M264,17L281,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M287,32L336,32L336,2L287,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="312" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="359,17 348,21 348,12" style="fill:rgb(0,0,0)"/> +<path d="M336,17L353,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M374,32A15 15 0 0 0 389 17A15 15 0 0 0 374 2A15 15 0 0 0 359 17A15 15 0 0 0 374 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="374" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="413,17 401,21 401,12" style="fill:rgb(0,0,0)"/> +<path d="M389,17L407,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="416" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/literal-value.html">literal-value:</a></b> +<button id='x2271' onclick='hideorshow("x2271","x2272")'>show</button></p> + <div id='x2272' style='display:none;' class='imgcontainer'> + <div style="max-width:341px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 341.376 336.96"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,319 39,324 39,315" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,304 Q 24,319 34,319 L 45,319" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M65,334L252,334A15 15 0 0 0 267 319A15 15 0 0 0 252 304L65,304A15 15 0 0 0 50 319A15 15 0 0 0 65 334Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="159" y="319" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT_TIMESTAMP</text> +<polygon points="290,319 278,324 278,315" style="fill:rgb(0,0,0)"/> +<path d="M267,319L284,319" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="332,17 320,21 320,12" style="fill:rgb(0,0,0)"/> +<path d="M290,319 L 297,319 Q 305,319 305,304 L 305,32 Q 305,17 315,17 L 326,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="335" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,32L172,32A15 15 0 0 0 187 17A15 15 0 0 0 172 2L66,2A15 15 0 0 0 50 17A15 15 0 0 0 66 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="119" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">numeric-literal</text> +<polygon points="50,17 39,21 39,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L45,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M187,17L320,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,70L153,70A15 15 0 0 0 168 55L168,55A15 15 0 0 0 153 39L66,39A15 15 0 0 0 50 55L50,55A15 15 0 0 0 66 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="109" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">string-literal</text> +<polygon points="50,55 39,59 39,50" style="fill:rgb(0,0,0)"/> +<path d="M24,39 L 24,47 Q 24,55 34,55 L 45,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,55 278,59 278,50" style="fill:rgb(0,0,0)"/> +<path d="M168,55L284,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,55 L 297,55 Q 305,55 305,47 L 305,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,108L140,108A15 15 0 0 0 155 92A15 15 0 0 0 140 77L66,77A15 15 0 0 0 50 92A15 15 0 0 0 66 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="103" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">blob-literal</text> +<polygon points="50,92 39,97 39,88" style="fill:rgb(0,0,0)"/> +<path d="M24,77 L 24,85 Q 24,92 34,92 L 45,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,92 278,97 278,88" style="fill:rgb(0,0,0)"/> +<path d="M155,92L284,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,92 L 297,92 Q 305,92 305,85 L 305,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,145L97,145A15 15 0 0 0 112 130A15 15 0 0 0 97 115L66,115A15 15 0 0 0 50 130A15 15 0 0 0 66 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="81" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NULL</text> +<polygon points="50,130 39,135 39,126" style="fill:rgb(0,0,0)"/> +<path d="M24,115 L 24,123 Q 24,130 34,130 L 45,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,130 278,135 278,126" style="fill:rgb(0,0,0)"/> +<path d="M112,130L284,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,130 L 297,130 Q 305,130 305,123 L 305,115" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,183L96,183A15 15 0 0 0 111 168A15 15 0 0 0 96 153L66,153A15 15 0 0 0 50 168A15 15 0 0 0 66 183Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="81" y="168" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">TRUE</text> +<polygon points="50,168 39,172 39,164" style="fill:rgb(0,0,0)"/> +<path d="M24,153 L 24,160 Q 24,168 34,168 L 45,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,168 278,172 278,164" style="fill:rgb(0,0,0)"/> +<path d="M111,168L284,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,168 L 297,168 Q 305,168 305,160 L 305,153" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,221L104,221A15 15 0 0 0 119 206A15 15 0 0 0 104 191L66,191A15 15 0 0 0 50 206A15 15 0 0 0 66 221Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="85" y="206" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FALSE</text> +<polygon points="50,206 39,210 39,201" style="fill:rgb(0,0,0)"/> +<path d="M24,191 L 24,198 Q 24,206 34,206 L 45,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,206 278,210 278,201" style="fill:rgb(0,0,0)"/> +<path d="M119,206L284,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,206 L 297,206 Q 305,206 305,198 L 305,191" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,259L190,259A15 15 0 0 0 205 244A15 15 0 0 0 190 228L66,228A15 15 0 0 0 50 244A15 15 0 0 0 66 259Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="128" y="244" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT_TIME</text> +<polygon points="50,244 39,248 39,239" style="fill:rgb(0,0,0)"/> +<path d="M24,228 L 24,236 Q 24,244 34,244 L 45,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,244 278,248 278,239" style="fill:rgb(0,0,0)"/> +<path d="M205,244L284,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,244 L 297,244 Q 305,244 305,236 L 305,229" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,297L192,297A15 15 0 0 0 207 281A15 15 0 0 0 192 266L66,266A15 15 0 0 0 50 281A15 15 0 0 0 66 297Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="129" y="281" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT_DATE</text> +<polygon points="50,281 39,286 39,277" style="fill:rgb(0,0,0)"/> +<path d="M24,266 L 24,274 Q 24,281 34,281 L 45,281" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="290,281 278,286 278,277" style="fill:rgb(0,0,0)"/> +<path d="M207,281L284,281" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M290,281 L 297,281 Q 305,281 305,274 L 305,266" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/over-clause.html">over-clause:</a></b> +<button id='x2273' onclick='hideorshow("x2273","x2274")'>show</button></p> + <div id='x2274' style='display:none;' class='imgcontainer'> + <div style="max-width:600px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 600.706 418.392"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,32L78,32A15 15 0 0 0 93 17A15 15 0 0 0 78 2L47,2A15 15 0 0 0 32 17A15 15 0 0 0 47 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="62" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">OVER</text> +<polygon points="129,17 117,21 117,12" style="fill:rgb(0,0,0)"/> +<path d="M93,17L123,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M144,32L241,32A15 15 0 0 0 256 17A15 15 0 0 0 241 2L144,2A15 15 0 0 0 129 17A15 15 0 0 0 144 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="192" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">window-name</text> +<polygon points="134,55 123,59 123,50" style="fill:rgb(0,0,0)"/> +<path d="M93,17 L 100,17 Q 108,17 108,32 L 108,40 Q 108,55 118,55 L 129,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M149,70A15 15 0 0 0 165 55L165,55A15 15 0 0 0 149 39A15 15 0 0 0 134 55L134,55A15 15 0 0 0 149 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="149" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="206,82 195,86 195,77" style="fill:rgb(0,0,0)"/> +<path d="M165,55 L 172,55 Q 180,55 180,68 Q 180,82 190,82 L 200,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M221,97L363,97A15 15 0 0 0 378 82A15 15 0 0 0 363 67L221,67A15 15 0 0 0 206 82A15 15 0 0 0 221 97Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="292" y="82" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">base-window-name</text> +<path d="M221,173L301,173A15 15 0 0 0 316 157A15 15 0 0 0 301 142L221,142A15 15 0 0 0 206 157A15 15 0 0 0 221 173Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="261" y="157" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PARTITION</text> +<polygon points="339,157 328,162 328,153" style="fill:rgb(0,0,0)"/> +<path d="M316,157L333,157" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M354,173L358,173A15 15 0 0 0 373 157A15 15 0 0 0 358 142L354,142A15 15 0 0 0 339 157A15 15 0 0 0 354 173Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="356" y="157" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="409,157 398,162 398,153" style="fill:rgb(0,0,0)"/> +<path d="M373,157L404,157" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M409,173L459,173L459,142L409,142Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="434" y="157" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<path d="M434,210A15 15 0 0 0 449 195A15 15 0 0 0 434 180A15 15 0 0 0 419 195A15 15 0 0 0 434 210Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="434" y="195" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="449,195 461,191 461,200" style="fill:rgb(0,0,0)"/> +<path d="M459,157 L 466,157 Q 474,157 474,172 L 474,180 Q 474,195 464,195 L 455,195" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M419,195 L 398,195 Q 383,195 383,180 L 383,172 Q 383,157 390,157 L 398,157" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="292,55 280,59 280,50" style="fill:rgb(0,0,0)"/> +<path d="M165,55L286,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="292,120 304,115 304,124" style="fill:rgb(0,0,0)"/> +<path d="M292,55 L 401,55 Q 416,55 416,70 L 416,105 Q 416,120 401,120 L 313,120 L 298,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="206,157 195,162 195,153" style="fill:rgb(0,0,0)"/> +<path d="M292,120 L 180,120 Q 165,120 165,135 L 165,142 Q 165,157 180,157 L 185,157 L 200,157" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="401,82 389,86 389,77" style="fill:rgb(0,0,0)"/> +<path d="M378,82L395,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M401,82 L 408,82 Q 416,82 416,89 L 416,97" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M221,286L266,286A15 15 0 0 0 281 271A15 15 0 0 0 266 256L221,256A15 15 0 0 0 206 271A15 15 0 0 0 221 286Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="244" y="271" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ORDER</text> +<polygon points="304,271 292,275 292,266" style="fill:rgb(0,0,0)"/> +<path d="M281,271L298,271" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M319,286L323,286A15 15 0 0 0 338 271A15 15 0 0 0 323 256L319,256A15 15 0 0 0 304 271A15 15 0 0 0 319 286Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="321" y="271" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="374,271 363,275 363,266" style="fill:rgb(0,0,0)"/> +<path d="M338,271L368,271" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M374,286L504,286L504,256L374,256Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="439" y="271" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ordering-term</text> +<path d="M439,324A15 15 0 0 0 454 309A15 15 0 0 0 439 293A15 15 0 0 0 424 309A15 15 0 0 0 439 324Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="439" y="309" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="454,309 466,304 466,313" style="fill:rgb(0,0,0)"/> +<path d="M504,271 L 512,271 Q 519,271 519,286 L 519,294 Q 519,309 504,309 L 475,309 L 460,309" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M424,309 L 363,309 Q 348,309 348,294 L 348,286 Q 348,271 355,271 L 363,271" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="292,233 304,229 304,237" style="fill:rgb(0,0,0)"/> +<path d="M459,157 L 466,157 Q 474,157 474,172 L 474,218 Q 474,233 459,233 L 313,233 L 298,233" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="206,271 195,275 195,266" style="fill:rgb(0,0,0)"/> +<path d="M292,233 L 180,233 Q 165,233 165,248 L 165,256 Q 165,271 180,271 L 185,271 L 200,271" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="165,195 160,184 169,184" style="fill:rgb(0,0,0)"/> +<path d="M165,142L165,189" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M165,195L165,256" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M206,399L311,399L311,369L206,369Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="258" y="384" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">frame-spec</text> +<polygon points="519,384 508,389 508,380" style="fill:rgb(0,0,0)"/> +<path d="M311,384L513,384" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M534,399A15 15 0 0 0 549 384A15 15 0 0 0 534 369A15 15 0 0 0 519 384A15 15 0 0 0 534 399Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="534" y="384" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="591,17 579,21 579,12" style="fill:rgb(0,0,0)"/> +<path d="M549,384 L 557,384 Q 564,384 564,369 L 564,32 Q 564,17 575,17 L 585,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="594" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="519,17 508,21 508,12" style="fill:rgb(0,0,0)"/> +<path d="M256,17L513,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M519,17L579,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="292,346 304,342 304,351" style="fill:rgb(0,0,0)"/> +<path d="M504,271 L 512,271 Q 519,271 519,286 L 519,331 Q 519,346 504,346 L 313,346 L 298,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="206,384 195,389 195,380" style="fill:rgb(0,0,0)"/> +<path d="M292,346 L 180,346 Q 165,346 165,361 L 165,369 Q 165,384 180,384 L 185,384 L 200,384" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="165,309 160,297 169,297" style="fill:rgb(0,0,0)"/> +<path d="M165,256L165,303" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M165,309L165,369" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="258,411 247,416 247,407" style="fill:rgb(0,0,0)"/> +<path d="M165,369 L 165,396 Q 165,411 180,411 L 238,411 L 253,411" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="380,384 369,389 369,380" style="fill:rgb(0,0,0)"/> +<path d="M258,411 L 335,411 Q 350,411 350,398 Q 350,384 362,384 L 375,384" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/frame-spec.html">frame-spec:</a></b> +<button id='x2275' onclick='hideorshow("x2275","x2276")'>show</button></p> + <div id='x2276' style='display:none;' class='imgcontainer'> + <div style="max-width:1039px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 1039.65 522.72"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,92 39,97 39,88" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,77 Q 24,92 34,92 L 45,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,108L120,108A15 15 0 0 0 135 92A15 15 0 0 0 120 77L66,77A15 15 0 0 0 50 92A15 15 0 0 0 66 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="93" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GROUPS</text> +<path d="M135,92 L 143,92 Q 150,92 150,77 L 150,32 Q 150,17 158,17 L 165,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,17 195,21 195,12" style="fill:rgb(0,0,0)"/> +<path d="M165,17L201,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,32L294,32A15 15 0 0 0 309 17A15 15 0 0 0 294 2L222,2A15 15 0 0 0 207 17A15 15 0 0 0 222 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="258" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BETWEEN</text> +<polygon points="351,17 339,21 339,12" style="fill:rgb(0,0,0)"/> +<path d="M309,17L345,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M366,32L467,32A15 15 0 0 0 482 17A15 15 0 0 0 467 2L366,2A15 15 0 0 0 351 17A15 15 0 0 0 366 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="417" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="500,17 488,21 488,12" style="fill:rgb(0,0,0)"/> +<path d="M482,17L494,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M515,32L603,32A15 15 0 0 0 618 17A15 15 0 0 0 603 2L515,2A15 15 0 0 0 500 17A15 15 0 0 0 515 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="559" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="659,17 648,21 648,12" style="fill:rgb(0,0,0)"/> +<path d="M618,17L653,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M674,32L695,32A15 15 0 0 0 710 17A15 15 0 0 0 695 2L674,2A15 15 0 0 0 659 17A15 15 0 0 0 674 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="685" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AND</text> +<polygon points="752,130 740,135 740,126" style="fill:rgb(0,0,0)"/> +<path d="M710,17 L 718,17 Q 725,17 725,32 L 725,115 Q 725,130 735,130 L 746,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,145L868,145A15 15 0 0 0 883 130A15 15 0 0 0 868 115L767,115A15 15 0 0 0 752 130A15 15 0 0 0 767 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="817" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="900,130 889,135 889,126" style="fill:rgb(0,0,0)"/> +<path d="M883,130L895,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M915,145L1007,145A15 15 0 0 0 1022 130A15 15 0 0 0 1007 115L915,115A15 15 0 0 0 900 130A15 15 0 0 0 915 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="961" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<path d="M1022,130 L 1029,130 Q 1037,130 1037,138 L 1037,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,17 39,21 39,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L45,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,32L109,32A15 15 0 0 0 125 17A15 15 0 0 0 109 2L66,2A15 15 0 0 0 50 17A15 15 0 0 0 66 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="87" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RANGE</text> +<polygon points="142,17 130,21 130,12" style="fill:rgb(0,0,0)"/> +<path d="M125,17L136,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M142,17L157,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,55 39,59 39,50" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,40 Q 24,55 34,55 L 45,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,70L101,70A15 15 0 0 0 116 55L116,55A15 15 0 0 0 101 39L66,39A15 15 0 0 0 50 55L50,55A15 15 0 0 0 66 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="83" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROWS</text> +<polygon points="135,55 124,59 124,50" style="fill:rgb(0,0,0)"/> +<path d="M116,55L129,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M135,55 L 143,55 Q 150,55 150,47 L 150,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,168 195,172 195,164" style="fill:rgb(0,0,0)"/> +<path d="M165,17 L 173,17 Q 180,17 180,32 L 180,153 Q 180,168 190,168 L 201,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,183L323,183A15 15 0 0 0 338 168A15 15 0 0 0 323 153L222,153A15 15 0 0 0 207 168A15 15 0 0 0 222 183Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="272" y="168" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="361,168 350,172 350,164" style="fill:rgb(0,0,0)"/> +<path d="M338,168L355,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M376,183L464,183A15 15 0 0 0 479 168A15 15 0 0 0 464 153L376,153A15 15 0 0 0 361 168A15 15 0 0 0 376 183Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="420" y="168" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,168 1010,172 1010,164" style="fill:rgb(0,0,0)"/> +<path d="M479,168L1016,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,168 L 1029,168 Q 1037,168 1037,175 L 1037,183" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,221L256,221L256,191L207,191Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="231" y="206" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="279,206 267,210 267,201" style="fill:rgb(0,0,0)"/> +<path d="M256,206L273,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M294,221L382,221A15 15 0 0 0 397 206A15 15 0 0 0 382 191L294,191A15 15 0 0 0 279 206A15 15 0 0 0 294 221Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="338" y="206" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,206 1010,210 1010,201" style="fill:rgb(0,0,0)"/> +<path d="M397,206L1016,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,206 L 1029,206 Q 1037,206 1037,213 L 1037,221" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,206 195,210 195,201" style="fill:rgb(0,0,0)"/> +<path d="M180,153 L 180,191 Q 180,206 190,206 L 201,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,259L292,259A15 15 0 0 0 307 244A15 15 0 0 0 292 228L222,228A15 15 0 0 0 207 244A15 15 0 0 0 222 259Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="257" y="244" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="330,244 318,248 318,239" style="fill:rgb(0,0,0)"/> +<path d="M307,244L324,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M345,259L369,259A15 15 0 0 0 384 244A15 15 0 0 0 369 228L345,228A15 15 0 0 0 330 244A15 15 0 0 0 345 259Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="357" y="244" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="1022,244 1010,248 1010,239" style="fill:rgb(0,0,0)"/> +<path d="M384,244L1016,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,244 L 1029,244 Q 1037,244 1037,251 L 1037,259" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,244 195,248 195,239" style="fill:rgb(0,0,0)"/> +<path d="M180,191 L 180,229 Q 180,244 190,244 L 201,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,70L400,70L400,39L351,39Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="375" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="423,55 412,59 412,50" style="fill:rgb(0,0,0)"/> +<path d="M400,55L417,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M438,70L526,70A15 15 0 0 0 541 55A15 15 0 0 0 526 39L438,39A15 15 0 0 0 423 55A15 15 0 0 0 438 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="482" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="618,55 606,59 606,50" style="fill:rgb(0,0,0)"/> +<path d="M541,55L612,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,55 L 625,55 Q 633,55 633,47 L 633,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,55 339,59 339,50" style="fill:rgb(0,0,0)"/> +<path d="M309,17 L 317,17 Q 324,17 324,32 L 324,40 Q 324,55 335,55 L 345,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M366,107L436,107A15 15 0 0 0 451 92A15 15 0 0 0 436 77L366,77A15 15 0 0 0 351 92A15 15 0 0 0 366 107Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="401" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="474,92 462,97 462,88" style="fill:rgb(0,0,0)"/> +<path d="M451,92L468,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M489,108L513,108A15 15 0 0 0 528 92A15 15 0 0 0 513 77L489,77A15 15 0 0 0 474 92A15 15 0 0 0 489 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="501" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="618,92 606,97 606,88" style="fill:rgb(0,0,0)"/> +<path d="M528,92L612,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,92 L 625,92 Q 633,92 633,85 L 633,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,92 339,97 339,88" style="fill:rgb(0,0,0)"/> +<path d="M324,39 L 324,77 Q 324,92 335,92 L 345,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,145L400,145L400,115L351,115Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="375" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="423,130 412,134 412,126" style="fill:rgb(0,0,0)"/> +<path d="M400,130L417,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M438,145L530,145A15 15 0 0 0 545 130A15 15 0 0 0 530 115L438,115A15 15 0 0 0 423 130A15 15 0 0 0 438 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="484" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<polygon points="618,130 606,134 606,126" style="fill:rgb(0,0,0)"/> +<path d="M545,130L612,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,130 L 625,130 Q 633,130 633,115 L 633,32 Q 633,17 640,17 L 648,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,130 339,134 339,126" style="fill:rgb(0,0,0)"/> +<path d="M324,77 L 324,115 Q 324,130 335,130 L 345,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,17 740,21 740,12" style="fill:rgb(0,0,0)"/> +<path d="M710,17L746,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M752,32L801,32L801,2L752,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="776" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="824,17 812,21 812,12" style="fill:rgb(0,0,0)"/> +<path d="M801,17L818,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M839,32L927,32A15 15 0 0 0 942 17A15 15 0 0 0 927 2L839,2A15 15 0 0 0 824 17A15 15 0 0 0 839 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="883" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,17 1010,21 1010,12" style="fill:rgb(0,0,0)"/> +<path d="M942,17L1016,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,17 L 1029,17 Q 1037,17 1037,32 L 1037,289 Q 1037,304 1022,304 L 1016,304 L 1001,304" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,70L837,70A15 15 0 0 0 852 55A15 15 0 0 0 837 39L767,39A15 15 0 0 0 752 55A15 15 0 0 0 767 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="802" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="875,55 863,59 863,50" style="fill:rgb(0,0,0)"/> +<path d="M852,55L869,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M890,70L914,70A15 15 0 0 0 929 55A15 15 0 0 0 914 39L890,39A15 15 0 0 0 875 55A15 15 0 0 0 890 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="902" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="1022,55 1010,59 1010,50" style="fill:rgb(0,0,0)"/> +<path d="M929,55L1016,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,55 L 1029,55 Q 1037,55 1037,62 L 1037,70" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,55 740,59 740,50" style="fill:rgb(0,0,0)"/> +<path d="M710,17 L 718,17 Q 725,17 725,32 L 725,40 Q 725,55 735,55 L 746,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M752,107L801,107L801,77L752,77Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="776" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="824,92 812,97 812,88" style="fill:rgb(0,0,0)"/> +<path d="M801,92L818,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M839,108L930,108A15 15 0 0 0 945 92A15 15 0 0 0 930 77L839,77A15 15 0 0 0 824 92A15 15 0 0 0 839 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="885" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<polygon points="1022,92 1010,97 1010,88" style="fill:rgb(0,0,0)"/> +<path d="M945,92L1016,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,92 L 1029,92 Q 1037,92 1037,100 L 1037,107" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,92 740,97 740,88" style="fill:rgb(0,0,0)"/> +<path d="M725,39 L 725,77 Q 725,92 735,92 L 746,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,410L529,410A15 15 0 0 0 544 395A15 15 0 0 0 529 380L461,380A15 15 0 0 0 446 395A15 15 0 0 0 461 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,395 555,399 555,390" style="fill:rgb(0,0,0)"/> +<path d="M544,395L561,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,410L652,410A15 15 0 0 0 667 395A15 15 0 0 0 652 380L582,380A15 15 0 0 0 567 395A15 15 0 0 0 582 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="617" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="690,395 678,399 678,390" style="fill:rgb(0,0,0)"/> +<path d="M667,395L684,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M705,410L729,410A15 15 0 0 0 744 395A15 15 0 0 0 729 380L705,380A15 15 0 0 0 690 395A15 15 0 0 0 705 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="717" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="767,395 756,399 756,390" style="fill:rgb(0,0,0)"/> +<path d="M744,395L762,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,395 L 775,395 Q 782,395 782,402 L 782,410" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,448L529,448A15 15 0 0 0 544 433A15 15 0 0 0 529 417L461,417A15 15 0 0 0 446 433A15 15 0 0 0 461 448Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="433" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,433 555,437 555,428" style="fill:rgb(0,0,0)"/> +<path d="M544,433L561,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,448L625,448A15 15 0 0 0 640 433A15 15 0 0 0 625 417L582,417A15 15 0 0 0 567 433A15 15 0 0 0 582 448Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="604" y="433" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GROUP</text> +<polygon points="767,433 756,437 756,428" style="fill:rgb(0,0,0)"/> +<path d="M640,433L762,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,433 L 775,433 Q 782,433 782,440 L 782,448" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,486L529,486A15 15 0 0 0 544 470A15 15 0 0 0 529 455L461,455A15 15 0 0 0 446 470A15 15 0 0 0 461 486Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="470" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,470 555,475 555,466" style="fill:rgb(0,0,0)"/> +<path d="M544,470L561,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,486L604,486A15 15 0 0 0 619 470A15 15 0 0 0 604 455L582,455A15 15 0 0 0 567 470A15 15 0 0 0 582 486Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="593" y="470" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">TIES</text> +<polygon points="767,470 756,475 756,466" style="fill:rgb(0,0,0)"/> +<path d="M619,470L762,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,470 L 775,470 Q 782,470 782,478 L 782,485" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,372L529,372A15 15 0 0 0 544 357A15 15 0 0 0 529 342L461,342A15 15 0 0 0 446 357A15 15 0 0 0 461 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,357 555,361 555,353" style="fill:rgb(0,0,0)"/> +<path d="M544,357L561,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,372L591,372A15 15 0 0 0 606 357A15 15 0 0 0 591 342L582,342A15 15 0 0 0 567 357A15 15 0 0 0 582 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="586" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NO</text> +<polygon points="629,357 617,361 617,353" style="fill:rgb(0,0,0)"/> +<path d="M606,357L623,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M644,372L700,372A15 15 0 0 0 715 357A15 15 0 0 0 700 342L644,342A15 15 0 0 0 629 357A15 15 0 0 0 644 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="672" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">OTHERS</text> +<polygon points="767,357 756,361 756,353" style="fill:rgb(0,0,0)"/> +<path d="M715,357L762,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="890,516 879,520 879,511" style="fill:rgb(0,0,0)"/> +<path d="M767,357 L 775,357 Q 782,357 782,372 L 782,501 Q 782,516 797,516 L 870,516 L 885,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="894" cy="516" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="710,304 722,300 722,308" style="fill:rgb(0,0,0)"/> +<path d="M1001,304L716,304" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="527,516 516,520 516,511" style="fill:rgb(0,0,0)"/> +<path d="M710,304 L 434,304 Q 419,304 419,319 L 419,501 Q 419,516 434,516 L 507,516 L 522,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M527,516L797,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,357 434,361 434,353" style="fill:rgb(0,0,0)"/> +<path d="M419,342 L 419,349 Q 419,357 430,357 L 440,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,395 434,399 434,390" style="fill:rgb(0,0,0)"/> +<path d="M419,380 L 419,387 Q 419,395 430,395 L 440,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,433 434,437 434,428" style="fill:rgb(0,0,0)"/> +<path d="M419,417 L 419,425 Q 419,433 430,433 L 440,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,470 434,475 434,466" style="fill:rgb(0,0,0)"/> +<path d="M419,455 L 419,463 Q 419,470 430,470 L 440,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +</div> +<p><b><a href="syntax/raise-function.html">raise-function:</a></b> +<button id='x2277' onclick='hideorshow("x2277","x2278")'>show</button></p> + <div id='x2278' style='display:none;' class='imgcontainer'> + <div style="max-width:627px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 627.302 147.96"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,32L82,32A15 15 0 0 0 97 17A15 15 0 0 0 82 2L47,2A15 15 0 0 0 32 17A15 15 0 0 0 47 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="65" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RAISE</text> +<polygon points="120,17 109,21 109,12" style="fill:rgb(0,0,0)"/> +<path d="M97,17L114,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M135,32L135,32A15 15 0 0 0 150 17A15 15 0 0 0 135 2L135,2A15 15 0 0 0 120 17A15 15 0 0 0 135 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="135" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="192,55 180,59 180,50" style="fill:rgb(0,0,0)"/> +<path d="M150,17 L 158,17 Q 165,17 165,32 L 165,40 Q 165,55 176,55 L 186,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,70L285,70A15 15 0 0 0 300 55L300,55A15 15 0 0 0 285 39L207,39A15 15 0 0 0 192 55L192,55A15 15 0 0 0 207 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="246" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROLLBACK</text> +<polygon points="336,55 324,59 324,50" style="fill:rgb(0,0,0)"/> +<path d="M300,55L330,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,70A15 15 0 0 0 366 55L366,55A15 15 0 0 0 351 39A15 15 0 0 0 336 55L336,55A15 15 0 0 0 351 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="351" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="389,55 378,59 378,50" style="fill:rgb(0,0,0)"/> +<path d="M366,55L383,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M404,70L508,70A15 15 0 0 0 523 55L523,55A15 15 0 0 0 508 39L404,39A15 15 0 0 0 389 55L389,55A15 15 0 0 0 404 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="456" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">error-message</text> +<polygon points="564,17 553,21 553,12" style="fill:rgb(0,0,0)"/> +<path d="M523,55 L 530,55 Q 538,55 538,40 L 538,32 Q 538,17 548,17 L 558,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M579,32A15 15 0 0 0 594 17A15 15 0 0 0 579 2A15 15 0 0 0 564 17A15 15 0 0 0 579 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="579" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="617,17 606,21 606,12" style="fill:rgb(0,0,0)"/> +<path d="M594,17L612,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="621" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="192,17 180,21 180,12" style="fill:rgb(0,0,0)"/> +<path d="M150,17L186,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,32L259,32A15 15 0 0 0 274 17A15 15 0 0 0 259 2L207,2A15 15 0 0 0 192 17A15 15 0 0 0 207 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="233" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">IGNORE</text> +<polygon points="456,17 444,21 444,12" style="fill:rgb(0,0,0)"/> +<path d="M274,17L450,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M456,17L553,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,108L249,108A15 15 0 0 0 264 92A15 15 0 0 0 249 77L207,77A15 15 0 0 0 192 92A15 15 0 0 0 207 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="228" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ABORT</text> +<polygon points="300,92 288,97 288,88" style="fill:rgb(0,0,0)"/> +<path d="M264,92L294,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M300,92 L 307,92 Q 315,92 315,77 L 315,70 Q 315,55 322,55 L 330,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,145L229,145A15 15 0 0 0 244 130A15 15 0 0 0 229 115L207,115A15 15 0 0 0 192 130A15 15 0 0 0 207 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="218" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FAIL</text> +<polygon points="300,130 288,135 288,126" style="fill:rgb(0,0,0)"/> +<path d="M244,130L294,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M300,130 L 307,130 Q 315,130 315,115 L 315,92 L 315,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="192,130 180,135 180,126" style="fill:rgb(0,0,0)"/> +<path d="M165,39 L 165,115 Q 165,130 176,130 L 186,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="192,92 180,97 180,88" style="fill:rgb(0,0,0)"/> +<path d="M165,77 L 165,85 Q 165,92 176,92 L 186,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/type-name.html">type-name:</a></b> +<button id='x2279' onclick='hideorshow("x2279","x2280")'>show</button></p> + <div id='x2280' style='display:none;' class='imgcontainer'> + <div style="max-width:661px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 661.008 110.16"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,17 33,21 33,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L39,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M60,32L87,32A15 15 0 0 0 102 17A15 15 0 0 0 87 2L60,2A15 15 0 0 0 45 17A15 15 0 0 0 60 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="74" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">name</text> +<polygon points="165,92 153,97 153,88" style="fill:rgb(0,0,0)"/> +<path d="M102,17 L 123,17 Q 138,17 138,32 L 138,77 Q 138,92 149,92 L 159,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M180,108A15 15 0 0 0 195 92A15 15 0 0 0 180 77A15 15 0 0 0 165 92A15 15 0 0 0 180 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="180" y="92" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="212,92 201,97 201,88" style="fill:rgb(0,0,0)"/> +<path d="M195,92L207,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M212,108L350,108L350,77L212,77Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="281" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">signed-number</text> +<polygon points="367,92 356,97 356,88" style="fill:rgb(0,0,0)"/> +<path d="M350,92L362,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M382,108A15 15 0 0 0 398 92A15 15 0 0 0 382 77A15 15 0 0 0 367 92A15 15 0 0 0 382 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="382" y="92" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="415,92 403,97 403,88" style="fill:rgb(0,0,0)"/> +<path d="M398,92L409,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M415,108L553,108L553,77L415,77Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="484" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">signed-number</text> +<polygon points="570,92 558,97 558,88" style="fill:rgb(0,0,0)"/> +<path d="M553,92L564,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M585,108A15 15 0 0 0 600 92A15 15 0 0 0 585 77A15 15 0 0 0 570 92A15 15 0 0 0 585 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="585" y="92" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="651,17 640,21 640,12" style="fill:rgb(0,0,0)"/> +<path d="M600,92 L 608,92 Q 615,92 615,77 L 615,32 Q 615,17 630,17 L 630,17 L 645,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="655" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="165,55 153,59 153,50" style="fill:rgb(0,0,0)"/> +<path d="M102,17 L 123,17 Q 138,17 138,32 L 138,40 Q 138,55 149,55 L 159,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M180,70A15 15 0 0 0 195 55L195,55A15 15 0 0 0 180 39A15 15 0 0 0 165 55L165,55A15 15 0 0 0 180 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="180" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="212,55 201,59 201,50" style="fill:rgb(0,0,0)"/> +<path d="M195,55L207,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M212,70L350,70L350,39L212,39Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="281" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">signed-number</text> +<polygon points="367,55 356,59 356,50" style="fill:rgb(0,0,0)"/> +<path d="M350,55L362,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M382,70A15 15 0 0 0 398 55L398,55A15 15 0 0 0 382 39A15 15 0 0 0 367 55L367,55A15 15 0 0 0 382 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="382" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="600,55 589,59 589,50" style="fill:rgb(0,0,0)"/> +<path d="M398,55L594,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M600,55 L 608,55 Q 615,55 615,47 L 615,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="74,47 85,43 85,51" style="fill:rgb(0,0,0)"/> +<path d="M102,17 L 110,17 Q 117,17 117,32 L 117,32 Q 117,47 102,47 L 94,47 L 79,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M74,47 L 33,47 Q 18,47 18,32 L 18,32 Q 18,17 26,17 L 33,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="382,17 371,21 371,12" style="fill:rgb(0,0,0)"/> +<path d="M102,17L377,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M382,17L630,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/signed-number.html">signed-number:</a></b> +<button id='x2281' onclick='hideorshow("x2281","x2282")'>show</button></p> + <div id='x2282' style='display:none;' class='imgcontainer'> + <div style="max-width:292px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 292.013 99.576"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,44 39,48 39,40" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,30 Q 24,44 34,44 L 45,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,59A15 15 0 0 0 81 44L81,44A15 15 0 0 0 66 29A15 15 0 0 0 50 44L50,44A15 15 0 0 0 66 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="66" y="44" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">+</text> +<polygon points="122,17 111,21 111,12" style="fill:rgb(0,0,0)"/> +<path d="M81,44 L 88,44 Q 96,44 96,30 Q 96,17 106,17 L 116,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M137,32L244,32A15 15 0 0 0 259 17A15 15 0 0 0 244 2L137,2A15 15 0 0 0 122 17A15 15 0 0 0 137 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="191" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">numeric-literal</text> +<polygon points="282,17 271,21 271,12" style="fill:rgb(0,0,0)"/> +<path d="M259,17L276,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="286" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,82 39,86 39,77" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,67 Q 24,82 34,82 L 45,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,97A15 15 0 0 0 81 82L81,82A15 15 0 0 0 66 67A15 15 0 0 0 50 82L50,82A15 15 0 0 0 66 97Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="66" y="82" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">-</text> +<path d="M81,82 L 88,82 Q 96,82 96,67 L 96,44 L 96,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="66,17 54,21 54,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L60,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,17L111,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +</div> +</div> +<p><b><a href="syntax/join-clause.html">join-clause:</a></b> +<button id='x2283' onclick='hideorshow("x2283","x2284")'>show</button></p> + <div id='x2284' style='display:none;' class='imgcontainer'> + <div style="max-width:793px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 793.282 84.24"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M32,32L193,32L193,2L32,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="112" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-or-subquery</text> +<polygon points="259,47 247,51 247,43" style="fill:rgb(0,0,0)"/> +<path d="M193,17 L 200,17 Q 208,17 208,32 L 208,32 Q 208,47 223,47 L 238,47 L 253,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M259,62L380,62L380,32L259,32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="319" y="47" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">join-operator</text> +<polygon points="403,47 391,51 391,43" style="fill:rgb(0,0,0)"/> +<path d="M380,47L397,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M403,62L564,62L564,32L403,32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="483" y="47" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-or-subquery</text> +<polygon points="587,47 575,51 575,43" style="fill:rgb(0,0,0)"/> +<path d="M564,47L581,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M587,62L721,62L721,32L587,32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="654" y="47" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">join-constraint</text> +<polygon points="783,17 772,21 772,12" style="fill:rgb(0,0,0)"/> +<path d="M721,47 L 742,47 Q 757,47 757,32 L 757,32 Q 757,17 767,17 L 778,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="787" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="483,17 472,21 472,12" style="fill:rgb(0,0,0)"/> +<path d="M193,17L478,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M483,17L776,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="483,77 495,73 495,82" style="fill:rgb(0,0,0)"/> +<path d="M721,47 L 728,47 Q 736,47 736,62 L 736,62 Q 736,77 721,77 L 504,77 L 489,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M483,77 L 247,77 Q 232,77 232,62 L 232,62 Q 232,47 246,47 L 259,47" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/join-constraint.html">join-constraint:</a></b> +<button id='x2285' onclick='hideorshow("x2285","x2286")'>show</button></p> + <div id='x2286' style='display:none;' class='imgcontainer'> + <div style="max-width:483px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 483.336 126.576"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,55 39,59 39,50" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,40 Q 24,55 34,55 L 45,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,70L104,70A15 15 0 0 0 120 55L120,55A15 15 0 0 0 104 39L66,39A15 15 0 0 0 50 55L50,55A15 15 0 0 0 66 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="85" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">USING</text> +<polygon points="143,55 131,59 131,50" style="fill:rgb(0,0,0)"/> +<path d="M120,55L137,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M158,70A15 15 0 0 0 173 55L173,55A15 15 0 0 0 158 39A15 15 0 0 0 143 55L143,55A15 15 0 0 0 158 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="158" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="209,55 197,59 197,50" style="fill:rgb(0,0,0)"/> +<path d="M173,55L203,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M224,70L318,70A15 15 0 0 0 333 55L333,55A15 15 0 0 0 318 39L224,39A15 15 0 0 0 209 55L209,55A15 15 0 0 0 224 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="271" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-name</text> +<polygon points="369,55 358,59 358,50" style="fill:rgb(0,0,0)"/> +<path d="M333,55L363,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M384,70A15 15 0 0 0 399 55L399,55A15 15 0 0 0 384 39A15 15 0 0 0 369 55L369,55A15 15 0 0 0 384 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="384" y="55" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="422,55 411,59 411,50" style="fill:rgb(0,0,0)"/> +<path d="M399,55L417,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="473,17 462,21 462,12" style="fill:rgb(0,0,0)"/> +<path d="M422,55 L 430,55 Q 437,55 437,40 L 437,32 Q 437,17 452,17 L 453,17 L 468,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="477" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M271,108A15 15 0 0 0 286 92A15 15 0 0 0 271 77A15 15 0 0 0 256 92A15 15 0 0 0 271 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="271" y="92" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="286,92 298,88 298,97" style="fill:rgb(0,0,0)"/> +<path d="M333,55 L 341,55 Q 348,55 348,70 L 348,77 Q 348,92 333,92 L 307,92 L 292,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M256,92 L 197,92 Q 182,92 182,77 L 182,70 Q 182,55 190,55 L 197,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,17 39,21 39,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L45,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,32L74,32A15 15 0 0 0 90 17A15 15 0 0 0 74 2L66,2A15 15 0 0 0 50 17A15 15 0 0 0 66 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="70" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ON</text> +<polygon points="113,17 101,21 101,12" style="fill:rgb(0,0,0)"/> +<path d="M90,17L107,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M113,32L162,32L162,2L113,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="137" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="422,17 411,21 411,12" style="fill:rgb(0,0,0)"/> +<path d="M162,17L417,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M422,17L462,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="209,120 197,124 197,115" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,105 Q 24,120 39,120 L 188,120 L 203,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M209,120 L 422,120 Q 437,120 437,105 L 437,54 L 437,39" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/join-operator.html">join-operator:</a></b> +<button id='x2287' onclick='hideorshow("x2287","x2288")'>show</button></p> + <div id='x2288' style='display:none;' class='imgcontainer'> + <div style="max-width:620px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 620.333 255.312"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,71 39,76 39,67" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,56 Q 24,71 34,71 L 45,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,86L133,86A15 15 0 0 0 148 71A15 15 0 0 0 133 56L66,56A15 15 0 0 0 50 71A15 15 0 0 0 66 86Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="99" y="71" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NATURAL</text> +<polygon points="189,41 178,45 178,37" style="fill:rgb(0,0,0)"/> +<path d="M148,71 L 155,71 Q 163,71 163,56 L 163,56 Q 163,41 173,41 L 184,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="231,71 219,76 219,67" style="fill:rgb(0,0,0)"/> +<path d="M189,41 L 197,41 Q 204,41 204,56 L 204,56 Q 204,71 215,71 L 225,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,86L273,86A15 15 0 0 0 288 71A15 15 0 0 0 273 56L246,56A15 15 0 0 0 231 71A15 15 0 0 0 246 86Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="259" y="71" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">LEFT</text> +<polygon points="378,71 366,76 366,67" style="fill:rgb(0,0,0)"/> +<path d="M288,71L372,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M393,86L437,86A15 15 0 0 0 452 71A15 15 0 0 0 437 56L393,56A15 15 0 0 0 378 71A15 15 0 0 0 393 86Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="415" y="71" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">OUTER</text> +<polygon points="475,71 463,76 463,67" style="fill:rgb(0,0,0)"/> +<path d="M452,71L469,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="516,41 505,45 505,37" style="fill:rgb(0,0,0)"/> +<path d="M475,71 L 482,71 Q 490,71 490,56 L 490,56 Q 490,41 500,41 L 511,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M532,56L554,56A15 15 0 0 0 569 41A15 15 0 0 0 554 26L532,26A15 15 0 0 0 516 41A15 15 0 0 0 532 56Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="543" y="41" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">JOIN</text> +<polygon points="610,17 599,21 599,12" style="fill:rgb(0,0,0)"/> +<path d="M569,41 L 576,41 Q 584,41 584,29 Q 584,17 594,17 L 605,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="614" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M310,32A15 15 0 0 0 325 17A15 15 0 0 0 310 2A15 15 0 0 0 295 17A15 15 0 0 0 310 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="310" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="295,17 283,21 283,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L289,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M325,17L599,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="99,41 88,45 88,37" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,29 Q 24,41 39,41 L 78,41 L 93,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M99,41L178,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M189,41L505,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="378,41 366,45 366,37" style="fill:rgb(0,0,0)"/> +<path d="M336,71 L 344,71 Q 351,71 351,56 L 351,56 Q 351,41 362,41 L 372,41" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="231,109 219,113 219,105" style="fill:rgb(0,0,0)"/> +<path d="M189,41 L 197,41 Q 204,41 204,56 L 204,94 Q 204,109 215,109 L 225,109" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,124L284,124A15 15 0 0 0 299 109A15 15 0 0 0 284 94L246,94A15 15 0 0 0 231 109A15 15 0 0 0 246 124Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="265" y="109" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RIGHT</text> +<polygon points="341,71 329,76 329,67" style="fill:rgb(0,0,0)"/> +<path d="M299,109 L 307,109 Q 314,109 314,94 L 314,86 Q 314,71 324,71 L 335,71" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="231,147 219,151 219,142" style="fill:rgb(0,0,0)"/> +<path d="M189,41 L 197,41 Q 204,41 204,56 L 204,132 Q 204,147 215,147 L 225,147" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,162L274,162A15 15 0 0 0 289 147A15 15 0 0 0 274 132L246,132A15 15 0 0 0 231 147A15 15 0 0 0 246 162Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="260" y="147" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FULL</text> +<path d="M289,147 L 302,147 Q 314,147 314,132 L 314,109 L 314,94" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="231,192 219,196 219,188" style="fill:rgb(0,0,0)"/> +<path d="M189,41 L 197,41 Q 204,41 204,56 L 204,177 Q 204,192 215,192 L 225,192" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,207L287,207A15 15 0 0 0 302 192A15 15 0 0 0 287 177L246,177A15 15 0 0 0 231 192A15 15 0 0 0 246 207Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="267" y="192" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">INNER</text> +<polygon points="475,192 463,196 463,188" style="fill:rgb(0,0,0)"/> +<path d="M302,192L469,192" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M475,192 L 482,192 Q 490,192 490,185 L 490,177" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="231,238 219,242 219,233" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,223 Q 24,238 39,238 L 210,238 L 225,238" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,253L287,253A15 15 0 0 0 303 238A15 15 0 0 0 287 222L246,222A15 15 0 0 0 231 238A15 15 0 0 0 246 253Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="267" y="238" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CROSS</text> +<polygon points="475,238 463,242 463,233" style="fill:rgb(0,0,0)"/> +<path d="M303,238L469,238" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M475,238 L 482,238 Q 490,238 490,223 L 490,71 L 490,56" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +</div> +<p><b><a href="syntax/ordering-term.html">ordering-term:</a></b> +<button id='x2289' onclick='hideorshow("x2289","x2290")'>show</button></p> + <div id='x2290' style='display:none;' class='imgcontainer'> + <div style="max-width:798px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 798.451 99.576"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M32,32L81,32L81,2L32,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="56" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="111,44 100,48 100,40" style="fill:rgb(0,0,0)"/> +<path d="M81,17 L 89,17 Q 96,17 96,30 Q 96,44 101,44 L 105,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M126,59L190,59A15 15 0 0 0 205 44L205,44A15 15 0 0 0 190 29L126,29A15 15 0 0 0 111 44L111,44A15 15 0 0 0 126 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="158" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">COLLATE</text> +<polygon points="228,44 217,48 217,40" style="fill:rgb(0,0,0)"/> +<path d="M205,44L223,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M244,59L349,59A15 15 0 0 0 364 44L364,44A15 15 0 0 0 349 29L244,29A15 15 0 0 0 228 44L228,44A15 15 0 0 0 244 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="296" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">collation-name</text> +<polygon points="406,17 394,21 394,12" style="fill:rgb(0,0,0)"/> +<path d="M364,44 L 372,44 Q 379,44 379,30 Q 379,17 389,17 L 400,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="243,17 232,21 232,12" style="fill:rgb(0,0,0)"/> +<path d="M81,17L238,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M243,17L394,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="447,82 436,86 436,77" style="fill:rgb(0,0,0)"/> +<path d="M406,17 L 413,17 Q 421,17 421,32 L 421,67 Q 421,82 431,82 L 441,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M462,97L492,97A15 15 0 0 0 508 82A15 15 0 0 0 492 67L462,67A15 15 0 0 0 447 82A15 15 0 0 0 462 97Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="477" y="82" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">DESC</text> +<polygon points="549,17 538,21 538,12" style="fill:rgb(0,0,0)"/> +<path d="M508,82 L 515,82 Q 523,82 523,67 L 523,32 Q 523,17 533,17 L 543,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M462,59L479,59A15 15 0 0 0 494 44L494,44A15 15 0 0 0 479 29L462,29A15 15 0 0 0 447 44L447,44A15 15 0 0 0 462 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="471" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ASC</text> +<polygon points="447,44 436,48 436,40" style="fill:rgb(0,0,0)"/> +<path d="M421,29 L 421,36 Q 421,44 431,44 L 441,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M494,44 L 508,44 Q 523,44 523,36 L 523,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="477,17 466,21 466,12" style="fill:rgb(0,0,0)"/> +<path d="M406,17L472,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M477,17L538,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="591,44 579,48 579,40" style="fill:rgb(0,0,0)"/> +<path d="M549,17 L 557,17 Q 564,17 564,30 Q 564,44 574,44 L 585,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M606,59L648,59A15 15 0 0 0 663 44L663,44A15 15 0 0 0 648 29L606,29A15 15 0 0 0 591 44L591,44A15 15 0 0 0 606 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="627" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NULLS</text> +<polygon points="686,44 674,48 674,40" style="fill:rgb(0,0,0)"/> +<path d="M663,44L680,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M701,59L735,59A15 15 0 0 0 750 44L750,44A15 15 0 0 0 735 29L701,29A15 15 0 0 0 686 44L686,44A15 15 0 0 0 701 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="718" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FIRST</text> +<polygon points="791,17 780,21 780,12" style="fill:rgb(0,0,0)"/> +<path d="M750,44 L 757,44 Q 765,44 765,30 Q 765,17 775,17 L 786,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M606,97L648,97A15 15 0 0 0 663 82A15 15 0 0 0 648 67L606,67A15 15 0 0 0 591 82A15 15 0 0 0 606 97Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="627" y="82" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NULLS</text> +<polygon points="686,82 674,86 674,77" style="fill:rgb(0,0,0)"/> +<path d="M663,82L680,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M701,97L727,97A15 15 0 0 0 742 82A15 15 0 0 0 727 67L701,67A15 15 0 0 0 686 82A15 15 0 0 0 701 97Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="714" y="82" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">LAST</text> +<polygon points="591,82 579,86 579,77" style="fill:rgb(0,0,0)"/> +<path d="M564,29 L 564,67 Q 564,82 574,82 L 585,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M742,82 L 754,82 Q 765,82 765,67 L 765,44 L 765,29" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="670,17 659,21 659,12" style="fill:rgb(0,0,0)"/> +<path d="M549,17L665,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M670,17L780,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/result-column.html">result-column:</a></b> +<button id='x2291' onclick='hideorshow("x2291","x2292")'>show</button></p> + <div id='x2292' style='display:none;' class='imgcontainer'> + <div style="max-width:398px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 398.054 163.08"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="45,17 33,21 33,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L39,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M45,32L94,32L94,2L45,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="69" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="136,55 124,59 124,50" style="fill:rgb(0,0,0)"/> +<path d="M94,17 L 102,17 Q 109,17 109,32 L 109,40 Q 109,55 119,55 L 130,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M151,70L155,70A15 15 0 0 0 170 55L170,55A15 15 0 0 0 155 39L151,39A15 15 0 0 0 136 55L136,55A15 15 0 0 0 151 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="153" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="206,55 194,59 194,50" style="fill:rgb(0,0,0)"/> +<path d="M170,55L200,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M221,70L309,70A15 15 0 0 0 324 55L324,55A15 15 0 0 0 309 39L221,39A15 15 0 0 0 206 55L206,55A15 15 0 0 0 221 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="265" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-alias</text> +<polygon points="347,55 335,59 335,50" style="fill:rgb(0,0,0)"/> +<path d="M324,55L341,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="388,17 377,21 377,12" style="fill:rgb(0,0,0)"/> +<path d="M347,55 L 354,55 Q 362,55 362,40 L 362,32 Q 362,17 372,17 L 382,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="392" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="153,85 141,89 141,81" style="fill:rgb(0,0,0)"/> +<path d="M109,39 L 109,70 Q 109,85 124,85 L 132,85 L 147,85" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M153,85 L 170,85 Q 185,85 185,70 L 185,70 Q 185,55 192,55 L 200,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="241,17 230,21 230,12" style="fill:rgb(0,0,0)"/> +<path d="M94,17L235,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M241,17L377,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,108 39,112 39,103" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,93 Q 24,108 34,108 L 45,108" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,123A15 15 0 0 0 81 108A15 15 0 0 0 66 92A15 15 0 0 0 50 108A15 15 0 0 0 66 123Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="66" y="108" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">*</text> +<polygon points="347,108 335,112 335,103" style="fill:rgb(0,0,0)"/> +<path d="M81,108L341,108" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M347,108 L 354,108 Q 362,108 362,93 L 362,54 L 362,39" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,145 39,150 39,141" style="fill:rgb(0,0,0)"/> +<path d="M24,92 L 24,130 Q 24,145 34,145 L 45,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,160L141,160A15 15 0 0 0 156 145A15 15 0 0 0 141 130L66,130A15 15 0 0 0 50 145A15 15 0 0 0 66 160Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="103" y="145" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="179,145 167,150 167,141" style="fill:rgb(0,0,0)"/> +<path d="M156,145L173,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M194,160A15 15 0 0 0 209 145A15 15 0 0 0 194 130A15 15 0 0 0 179 145A15 15 0 0 0 194 160Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="194" y="145" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">.</text> +<polygon points="232,145 221,150 221,141" style="fill:rgb(0,0,0)"/> +<path d="M209,145L226,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M247,160A15 15 0 0 0 262 145A15 15 0 0 0 247 130A15 15 0 0 0 232 145A15 15 0 0 0 247 160Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="247" y="145" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">*</text> +<polygon points="347,145 335,150 335,141" style="fill:rgb(0,0,0)"/> +<path d="M262,145L341,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M347,145 L 354,145 Q 362,145 362,130 L 362,107 L 362,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/table-or-subquery.html">table-or-subquery:</a></b> +<button id='x2293' onclick='hideorshow("x2293","x2294")'>show</button></p> + <div id='x2294' style='display:none;' class='imgcontainer'> + <div style="max-width:720px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 720.778 457.704"> +<circle cx="5" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,74 39,78 39,70" style="fill:rgb(0,0,0)"/> +<path d="M9,36 L 16,36 Q 24,36 24,51 L 24,59 Q 24,74 34,74 L 45,74" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,89L162,89A15 15 0 0 0 177 74L177,74A15 15 0 0 0 162 59L66,59A15 15 0 0 0 50 74L50,74A15 15 0 0 0 66 89Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="114" y="74" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">schema-name</text> +<polygon points="194,74 183,78 183,70" style="fill:rgb(0,0,0)"/> +<path d="M177,74L189,74" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M209,89A15 15 0 0 0 225 74L225,74A15 15 0 0 0 209 59A15 15 0 0 0 194 74L194,74A15 15 0 0 0 209 89Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="209" y="74" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">.</text> +<polygon points="266,36 255,41 255,32" style="fill:rgb(0,0,0)"/> +<path d="M225,74 L 232,74 Q 240,74 240,59 L 240,51 Q 240,36 250,36 L 260,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M281,51L356,51A15 15 0 0 0 371 36A15 15 0 0 0 356 21L281,21A15 15 0 0 0 266 36A15 15 0 0 0 281 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="319" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="407,36 396,41 396,32" style="fill:rgb(0,0,0)"/> +<path d="M371,36L402,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M423,51L427,51A15 15 0 0 0 442 36A15 15 0 0 0 427 21L423,21A15 15 0 0 0 407 36A15 15 0 0 0 423 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="425" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="478,36 466,41 466,32" style="fill:rgb(0,0,0)"/> +<path d="M442,36L472,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M493,51L561,51A15 15 0 0 0 577 36A15 15 0 0 0 561 21L493,21A15 15 0 0 0 478 36A15 15 0 0 0 493 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="527" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-alias</text> +<path d="M9,36L255,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="422,6 411,10 411,2" style="fill:rgb(0,0,0)"/> +<path d="M371,36 L 379,36 Q 386,36 386,21 L 386,21 Q 386,6 401,6 L 402,6 L 417,6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M422,6 L 442,6 Q 457,6 457,21 L 457,21 Q 457,36 464,36 L 472,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M422,6 L 577,6 Q 592,6 592,21 L 592,21 Q 592,36 599,36 L 607,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M323,127L388,127A15 15 0 0 0 403 112A15 15 0 0 0 388 97L323,97A15 15 0 0 0 308 112A15 15 0 0 0 323 127Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="356" y="112" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">INDEXED</text> +<polygon points="426,112 415,116 415,108" style="fill:rgb(0,0,0)"/> +<path d="M403,112L420,112" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M441,127L445,127A15 15 0 0 0 460 112A15 15 0 0 0 445 97L441,97A15 15 0 0 0 426 112A15 15 0 0 0 441 127Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="443" y="112" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="483,112 472,116 472,108" style="fill:rgb(0,0,0)"/> +<path d="M460,112L478,112" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M499,127L577,127A15 15 0 0 0 592 112A15 15 0 0 0 577 97L499,97A15 15 0 0 0 483 112A15 15 0 0 0 499 127Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="538" y="112" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">index-name</text> +<path d="M323,165L343,165A15 15 0 0 0 359 150A15 15 0 0 0 343 135L323,135A15 15 0 0 0 308 150A15 15 0 0 0 323 165Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="333" y="150" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NOT</text> +<polygon points="382,150 370,154 370,145" style="fill:rgb(0,0,0)"/> +<path d="M359,150L376,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M397,165L461,165A15 15 0 0 0 476 150A15 15 0 0 0 461 135L397,135A15 15 0 0 0 382 150A15 15 0 0 0 397 165Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="429" y="150" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">INDEXED</text> +<polygon points="527,74 539,70 539,78" style="fill:rgb(0,0,0)"/> +<path d="M577,36 L 607,36 Q 622,36 622,51 L 622,59 Q 622,74 607,74 L 548,74 L 533,74" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="308,150 297,154 297,145" style="fill:rgb(0,0,0)"/> +<path d="M527,74 L 297,74 Q 282,74 282,89 L 282,135 Q 282,150 292,150 L 302,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="308,112 297,116 297,108" style="fill:rgb(0,0,0)"/> +<path d="M282,97 L 282,104 Q 282,112 292,112 L 302,112" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="266,213 255,217 255,209" style="fill:rgb(0,0,0)"/> +<path d="M9,36 L 16,36 Q 24,36 24,51 L 24,198 Q 24,213 39,213 L 245,213 L 260,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M281,228L431,228A15 15 0 0 0 446 213A15 15 0 0 0 431 198L281,198A15 15 0 0 0 266 213A15 15 0 0 0 281 228Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="356" y="213" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-function-name</text> +<polygon points="463,213 452,217 452,209" style="fill:rgb(0,0,0)"/> +<path d="M446,213L457,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M478,228A15 15 0 0 0 493 213A15 15 0 0 0 478 198A15 15 0 0 0 463 213A15 15 0 0 0 478 228Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="478" y="213" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="529,213 518,217 518,209" style="fill:rgb(0,0,0)"/> +<path d="M493,213L524,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M529,228L579,228L579,198L529,198Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="554" y="213" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="615,213 603,217 603,209" style="fill:rgb(0,0,0)"/> +<path d="M579,213L609,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M630,228A15 15 0 0 0 645 213A15 15 0 0 0 630 198A15 15 0 0 0 615 213A15 15 0 0 0 630 228Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="630" y="213" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="675,187 679,198 671,198" style="fill:rgb(0,0,0)"/> +<path d="M645,213 L 660,213 Q 675,213 675,203 L 675,192" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M554,190A15 15 0 0 0 569 175A15 15 0 0 0 554 160A15 15 0 0 0 539 175A15 15 0 0 0 554 190Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="554" y="175" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="569,175 581,171 581,180" style="fill:rgb(0,0,0)"/> +<path d="M579,213 L 586,213 Q 594,213 594,198 L 594,190 Q 594,175 584,175 L 575,175" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M539,175 L 518,175 Q 503,175 503,190 L 503,198 Q 503,213 510,213 L 518,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M225,74 L 232,74 Q 240,74 240,89 L 240,198 Q 240,213 247,213 L 255,213" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="660,112 648,116 648,108" style="fill:rgb(0,0,0)"/> +<path d="M592,112L654,112" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M660,112 L 667,112 Q 675,112 675,104 L 675,97" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="660,150 648,154 648,145" style="fill:rgb(0,0,0)"/> +<path d="M476,150L654,150" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M660,150 L 667,150 Q 675,150 675,142 L 675,135" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M577,36L690,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M407,304L411,304A15 15 0 0 0 426 289A15 15 0 0 0 411 274L407,274A15 15 0 0 0 392 289A15 15 0 0 0 407 304Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="409" y="289" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="498,289 487,293 487,284" style="fill:rgb(0,0,0)"/> +<path d="M426,289L492,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M513,304L582,304A15 15 0 0 0 597 289A15 15 0 0 0 582 274L513,274A15 15 0 0 0 498 289A15 15 0 0 0 513 304Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="548" y="289" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-alias</text> +<polygon points="660,289 648,293 648,284" style="fill:rgb(0,0,0)"/> +<path d="M597,289L654,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M660,289 L 667,289 Q 675,289 675,281 L 675,274" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="548,251 559,247 559,255" style="fill:rgb(0,0,0)"/> +<path d="M645,213 L 652,213 Q 660,213 660,228 L 660,236 Q 660,251 645,251 L 568,251 L 553,251" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="392,289 380,293 380,284" style="fill:rgb(0,0,0)"/> +<path d="M548,251 L 370,251 Q 355,251 355,266 L 355,274 Q 355,289 370,289 L 371,289 L 386,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M472,251 L 464,251 Q 457,251 457,266 L 457,274 Q 457,289 464,289 L 472,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,327 39,331 39,322" style="fill:rgb(0,0,0)"/> +<path d="M24,198 L 24,312 Q 24,327 34,327 L 45,327" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,342A15 15 0 0 0 81 327A15 15 0 0 0 66 311A15 15 0 0 0 50 327A15 15 0 0 0 66 342Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="66" y="327" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="104,327 92,331 92,322" style="fill:rgb(0,0,0)"/> +<path d="M81,327L98,327" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M104,342L208,342L208,311L104,311Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="156" y="327" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">select-stmt</text> +<polygon points="231,327 219,331 219,322" style="fill:rgb(0,0,0)"/> +<path d="M208,327L225,327" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M246,342A15 15 0 0 0 261 327A15 15 0 0 0 246 311A15 15 0 0 0 231 327A15 15 0 0 0 246 342Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="246" y="327" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="392,289 380,293 380,284" style="fill:rgb(0,0,0)"/> +<path d="M261,327 L 269,327 Q 276,327 276,312 L 276,304 Q 276,289 291,289 L 371,289 L 386,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="660,327 648,331 648,322" style="fill:rgb(0,0,0)"/> +<path d="M261,327L654,327" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M660,327 L 667,327 Q 675,327 675,319 L 675,312" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M424,327 L 432,327 Q 439,327 439,312 L 439,304 Q 439,289 447,289 L 454,289" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,364 39,369 39,360" style="fill:rgb(0,0,0)"/> +<path d="M24,311 L 24,349 Q 24,364 34,364 L 45,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M65,379A15 15 0 0 0 81 364A15 15 0 0 0 65 349A15 15 0 0 0 50 364A15 15 0 0 0 65 379Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="65" y="364" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="135,364 123,369 123,360" style="fill:rgb(0,0,0)"/> +<path d="M81,364L129,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M135,379L296,379L296,349L135,349Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="215" y="364" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-or-subquery</text> +<polygon points="350,364 338,369 338,360" style="fill:rgb(0,0,0)"/> +<path d="M296,364L344,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M365,379A15 15 0 0 0 380 364A15 15 0 0 0 365 349A15 15 0 0 0 350 364A15 15 0 0 0 365 379Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="365" y="364" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="660,364 648,369 648,360" style="fill:rgb(0,0,0)"/> +<path d="M380,364L654,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="711,36 699,41 699,32" style="fill:rgb(0,0,0)"/> +<path d="M660,364 L 667,364 Q 675,364 675,349 L 675,51 Q 675,36 690,36 L 690,36 L 705,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="715" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M215,417A15 15 0 0 0 230 402A15 15 0 0 0 215 387A15 15 0 0 0 200 402A15 15 0 0 0 215 417Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="215" y="402" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="230,402 242,398 242,406" style="fill:rgb(0,0,0)"/> +<path d="M296,364 L 303,364 Q 311,364 311,379 L 311,387 Q 311,402 296,402 L 251,402 L 236,402" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M200,402 L 123,402 Q 108,402 108,387 L 108,379 Q 108,364 116,364 L 123,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="122,440 111,444 111,436" style="fill:rgb(0,0,0)"/> +<path d="M81,364 L 88,364 Q 96,364 96,379 L 96,425 Q 96,440 106,440 L 116,440" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M122,455L224,455L224,425L122,425Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="173" y="440" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">join-clause</text> +<path d="M224,440 L 308,440 Q 323,440 323,425 L 323,379 Q 323,364 331,364 L 338,364" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +<p><b><a href="syntax/window-defn.html">window-defn:</a></b> +<button id='x2295' onclick='hideorshow("x2295","x2296")'>show</button></p> + <div id='x2296' style='display:none;' class='imgcontainer'> + <div style="max-width:479px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 479.765 380.592"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,32A15 15 0 0 0 62 17A15 15 0 0 0 47 2A15 15 0 0 0 32 17A15 15 0 0 0 47 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="47" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="104,44 92,48 92,40" style="fill:rgb(0,0,0)"/> +<path d="M62,17 L 70,17 Q 77,17 77,30 Q 77,44 88,44 L 98,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M119,59L260,59A15 15 0 0 0 275 44L275,44A15 15 0 0 0 260 29L119,29A15 15 0 0 0 104 44L104,44A15 15 0 0 0 119 59Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="190" y="44" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">base-window-name</text> +<path d="M119,135L198,135A15 15 0 0 0 214 120A15 15 0 0 0 198 104L119,104A15 15 0 0 0 104 120A15 15 0 0 0 119 135Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="159" y="120" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PARTITION</text> +<polygon points="237,120 225,124 225,115" style="fill:rgb(0,0,0)"/> +<path d="M214,120L231,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M252,135L256,135A15 15 0 0 0 271 120A15 15 0 0 0 256 104L252,104A15 15 0 0 0 237 120A15 15 0 0 0 252 135Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="254" y="120" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="307,120 295,124 295,115" style="fill:rgb(0,0,0)"/> +<path d="M271,120L301,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M307,135L356,135L356,104L307,104Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="332" y="120" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<path d="M332,173A15 15 0 0 0 347 157A15 15 0 0 0 332 142A15 15 0 0 0 316 157A15 15 0 0 0 332 173Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="332" y="157" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="347,157 358,153 358,162" style="fill:rgb(0,0,0)"/> +<path d="M356,120 L 364,120 Q 371,120 371,135 L 371,142 Q 371,157 362,157 L 352,157" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M316,157 L 295,157 Q 280,157 280,142 L 280,135 Q 280,120 288,120 L 295,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="190,17 178,21 178,12" style="fill:rgb(0,0,0)"/> +<path d="M62,17L184,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="190,82 201,77 201,86" style="fill:rgb(0,0,0)"/> +<path d="M190,17 L 298,17 Q 313,17 313,32 L 313,67 Q 313,82 298,82 L 210,82 L 195,82" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="104,120 92,124 92,115" style="fill:rgb(0,0,0)"/> +<path d="M190,82 L 77,82 Q 62,82 62,97 L 62,105 Q 62,120 77,120 L 83,120 L 98,120" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="298,44 287,48 287,40" style="fill:rgb(0,0,0)"/> +<path d="M275,44L293,44" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M298,44 L 306,44 Q 313,44 313,51 L 313,59" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M119,248L163,248A15 15 0 0 0 178 233A15 15 0 0 0 163 218L119,218A15 15 0 0 0 104 233A15 15 0 0 0 119 248Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="141" y="233" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ORDER</text> +<polygon points="201,233 190,237 190,229" style="fill:rgb(0,0,0)"/> +<path d="M178,233L196,233" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M217,248L221,248A15 15 0 0 0 236 233A15 15 0 0 0 221 218L217,218A15 15 0 0 0 201 233A15 15 0 0 0 217 248Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="219" y="233" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BY</text> +<polygon points="272,233 260,237 260,229" style="fill:rgb(0,0,0)"/> +<path d="M236,233L266,233" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M272,248L402,248L402,218L272,218Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="337" y="233" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ordering-term</text> +<path d="M337,286A15 15 0 0 0 352 271A15 15 0 0 0 337 256A15 15 0 0 0 322 271A15 15 0 0 0 337 286Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="337" y="271" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="352,271 363,266 363,275" style="fill:rgb(0,0,0)"/> +<path d="M402,233 L 409,233 Q 417,233 417,248 L 417,256 Q 417,271 402,271 L 373,271 L 358,271" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M322,271 L 260,271 Q 245,271 245,256 L 245,248 Q 245,233 253,233 L 260,233" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="190,195 201,191 201,200" style="fill:rgb(0,0,0)"/> +<path d="M356,120 L 364,120 Q 371,120 371,135 L 371,180 Q 371,195 356,195 L 210,195 L 195,195" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="104,233 92,237 92,229" style="fill:rgb(0,0,0)"/> +<path d="M190,195 L 77,195 Q 62,195 62,210 L 62,218 Q 62,233 77,233 L 83,233 L 98,233" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="62,157 58,146 66,146" style="fill:rgb(0,0,0)"/> +<path d="M62,104L62,152" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M62,157L62,218" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M104,362L208,362L208,331L104,331Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="156" y="346" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">frame-spec</text> +<polygon points="417,346 405,351 405,342" style="fill:rgb(0,0,0)"/> +<path d="M208,346L411,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M432,362A15 15 0 0 0 447 346A15 15 0 0 0 432 331A15 15 0 0 0 417 346A15 15 0 0 0 432 362Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="432" y="346" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="470,346 458,351 458,342" style="fill:rgb(0,0,0)"/> +<path d="M447,346L464,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="474" cy="346" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="190,309 201,304 201,313" style="fill:rgb(0,0,0)"/> +<path d="M402,233 L 409,233 Q 417,233 417,248 L 417,294 Q 417,309 402,309 L 210,309 L 195,309" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="104,346 92,351 92,342" style="fill:rgb(0,0,0)"/> +<path d="M190,309 L 77,309 Q 62,309 62,324 L 62,331 Q 62,346 77,346 L 83,346 L 98,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="62,271 58,259 66,259" style="fill:rgb(0,0,0)"/> +<path d="M62,218L62,265" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M62,271L62,331" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="156,374 144,378 144,369" style="fill:rgb(0,0,0)"/> +<path d="M62,331 L 62,359 Q 62,374 77,374 L 135,374 L 150,374" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="278,346 266,351 266,342" style="fill:rgb(0,0,0)"/> +<path d="M156,374 L 233,374 Q 248,374 248,360 Q 248,346 260,346 L 272,346" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/frame-spec.html">frame-spec:</a></b> +<button id='x2297' onclick='hideorshow("x2297","x2298")'>show</button></p> + <div id='x2298' style='display:none;' class='imgcontainer'> + <div style="max-width:1039px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 1039.65 522.72"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,92 39,97 39,88" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,77 Q 24,92 34,92 L 45,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,108L120,108A15 15 0 0 0 135 92A15 15 0 0 0 120 77L66,77A15 15 0 0 0 50 92A15 15 0 0 0 66 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="93" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GROUPS</text> +<path d="M135,92 L 143,92 Q 150,92 150,77 L 150,32 Q 150,17 158,17 L 165,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,17 195,21 195,12" style="fill:rgb(0,0,0)"/> +<path d="M165,17L201,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,32L294,32A15 15 0 0 0 309 17A15 15 0 0 0 294 2L222,2A15 15 0 0 0 207 17A15 15 0 0 0 222 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="258" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">BETWEEN</text> +<polygon points="351,17 339,21 339,12" style="fill:rgb(0,0,0)"/> +<path d="M309,17L345,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M366,32L467,32A15 15 0 0 0 482 17A15 15 0 0 0 467 2L366,2A15 15 0 0 0 351 17A15 15 0 0 0 366 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="417" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="500,17 488,21 488,12" style="fill:rgb(0,0,0)"/> +<path d="M482,17L494,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M515,32L603,32A15 15 0 0 0 618 17A15 15 0 0 0 603 2L515,2A15 15 0 0 0 500 17A15 15 0 0 0 515 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="559" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="659,17 648,21 648,12" style="fill:rgb(0,0,0)"/> +<path d="M618,17L653,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M674,32L695,32A15 15 0 0 0 710 17A15 15 0 0 0 695 2L674,2A15 15 0 0 0 659 17A15 15 0 0 0 674 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="685" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AND</text> +<polygon points="752,130 740,135 740,126" style="fill:rgb(0,0,0)"/> +<path d="M710,17 L 718,17 Q 725,17 725,32 L 725,115 Q 725,130 735,130 L 746,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,145L868,145A15 15 0 0 0 883 130A15 15 0 0 0 868 115L767,115A15 15 0 0 0 752 130A15 15 0 0 0 767 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="817" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="900,130 889,135 889,126" style="fill:rgb(0,0,0)"/> +<path d="M883,130L895,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M915,145L1007,145A15 15 0 0 0 1022 130A15 15 0 0 0 1007 115L915,115A15 15 0 0 0 900 130A15 15 0 0 0 915 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="961" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<path d="M1022,130 L 1029,130 Q 1037,130 1037,138 L 1037,145" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,17 39,21 39,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L45,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,32L109,32A15 15 0 0 0 125 17A15 15 0 0 0 109 2L66,2A15 15 0 0 0 50 17A15 15 0 0 0 66 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="87" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">RANGE</text> +<polygon points="142,17 130,21 130,12" style="fill:rgb(0,0,0)"/> +<path d="M125,17L136,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M142,17L157,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="50,55 39,59 39,50" style="fill:rgb(0,0,0)"/> +<path d="M9,17 L 16,17 Q 24,17 24,32 L 24,40 Q 24,55 34,55 L 45,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M66,70L101,70A15 15 0 0 0 116 55L116,55A15 15 0 0 0 101 39L66,39A15 15 0 0 0 50 55L50,55A15 15 0 0 0 66 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="83" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROWS</text> +<polygon points="135,55 124,59 124,50" style="fill:rgb(0,0,0)"/> +<path d="M116,55L129,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M135,55 L 143,55 Q 150,55 150,47 L 150,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,168 195,172 195,164" style="fill:rgb(0,0,0)"/> +<path d="M165,17 L 173,17 Q 180,17 180,32 L 180,153 Q 180,168 190,168 L 201,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,183L323,183A15 15 0 0 0 338 168A15 15 0 0 0 323 153L222,153A15 15 0 0 0 207 168A15 15 0 0 0 222 183Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="272" y="168" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNBOUNDED</text> +<polygon points="361,168 350,172 350,164" style="fill:rgb(0,0,0)"/> +<path d="M338,168L355,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M376,183L464,183A15 15 0 0 0 479 168A15 15 0 0 0 464 153L376,153A15 15 0 0 0 361 168A15 15 0 0 0 376 183Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="420" y="168" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,168 1010,172 1010,164" style="fill:rgb(0,0,0)"/> +<path d="M479,168L1016,168" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,168 L 1029,168 Q 1037,168 1037,175 L 1037,183" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,221L256,221L256,191L207,191Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="231" y="206" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="279,206 267,210 267,201" style="fill:rgb(0,0,0)"/> +<path d="M256,206L273,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M294,221L382,221A15 15 0 0 0 397 206A15 15 0 0 0 382 191L294,191A15 15 0 0 0 279 206A15 15 0 0 0 294 221Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="338" y="206" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,206 1010,210 1010,201" style="fill:rgb(0,0,0)"/> +<path d="M397,206L1016,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,206 L 1029,206 Q 1037,206 1037,213 L 1037,221" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,206 195,210 195,201" style="fill:rgb(0,0,0)"/> +<path d="M180,153 L 180,191 Q 180,206 190,206 L 201,206" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M222,259L292,259A15 15 0 0 0 307 244A15 15 0 0 0 292 228L222,228A15 15 0 0 0 207 244A15 15 0 0 0 222 259Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="257" y="244" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="330,244 318,248 318,239" style="fill:rgb(0,0,0)"/> +<path d="M307,244L324,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M345,259L369,259A15 15 0 0 0 384 244A15 15 0 0 0 369 228L345,228A15 15 0 0 0 330 244A15 15 0 0 0 345 259Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="357" y="244" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="1022,244 1010,248 1010,239" style="fill:rgb(0,0,0)"/> +<path d="M384,244L1016,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,244 L 1029,244 Q 1037,244 1037,251 L 1037,259" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="207,244 195,248 195,239" style="fill:rgb(0,0,0)"/> +<path d="M180,191 L 180,229 Q 180,244 190,244 L 201,244" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,70L400,70L400,39L351,39Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="375" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="423,55 412,59 412,50" style="fill:rgb(0,0,0)"/> +<path d="M400,55L417,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M438,70L526,70A15 15 0 0 0 541 55A15 15 0 0 0 526 39L438,39A15 15 0 0 0 423 55A15 15 0 0 0 438 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="482" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="618,55 606,59 606,50" style="fill:rgb(0,0,0)"/> +<path d="M541,55L612,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,55 L 625,55 Q 633,55 633,47 L 633,40" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,55 339,59 339,50" style="fill:rgb(0,0,0)"/> +<path d="M309,17 L 317,17 Q 324,17 324,32 L 324,40 Q 324,55 335,55 L 345,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M366,107L436,107A15 15 0 0 0 451 92A15 15 0 0 0 436 77L366,77A15 15 0 0 0 351 92A15 15 0 0 0 366 107Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="401" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="474,92 462,97 462,88" style="fill:rgb(0,0,0)"/> +<path d="M451,92L468,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M489,108L513,108A15 15 0 0 0 528 92A15 15 0 0 0 513 77L489,77A15 15 0 0 0 474 92A15 15 0 0 0 489 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="501" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="618,92 606,97 606,88" style="fill:rgb(0,0,0)"/> +<path d="M528,92L612,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,92 L 625,92 Q 633,92 633,85 L 633,77" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,92 339,97 339,88" style="fill:rgb(0,0,0)"/> +<path d="M324,39 L 324,77 Q 324,92 335,92 L 345,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M351,145L400,145L400,115L351,115Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="375" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="423,130 412,134 412,126" style="fill:rgb(0,0,0)"/> +<path d="M400,130L417,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M438,145L530,145A15 15 0 0 0 545 130A15 15 0 0 0 530 115L438,115A15 15 0 0 0 423 130A15 15 0 0 0 438 145Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="484" y="130" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<polygon points="618,130 606,134 606,126" style="fill:rgb(0,0,0)"/> +<path d="M545,130L612,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M618,130 L 625,130 Q 633,130 633,115 L 633,32 Q 633,17 640,17 L 648,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="351,130 339,134 339,126" style="fill:rgb(0,0,0)"/> +<path d="M324,77 L 324,115 Q 324,130 335,130 L 345,130" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,17 740,21 740,12" style="fill:rgb(0,0,0)"/> +<path d="M710,17L746,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M752,32L801,32L801,2L752,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="776" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="824,17 812,21 812,12" style="fill:rgb(0,0,0)"/> +<path d="M801,17L818,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M839,32L927,32A15 15 0 0 0 942 17A15 15 0 0 0 927 2L839,2A15 15 0 0 0 824 17A15 15 0 0 0 839 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="883" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">PRECEDING</text> +<polygon points="1022,17 1010,21 1010,12" style="fill:rgb(0,0,0)"/> +<path d="M942,17L1016,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,17 L 1029,17 Q 1037,17 1037,32 L 1037,289 Q 1037,304 1022,304 L 1016,304 L 1001,304" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,70L837,70A15 15 0 0 0 852 55A15 15 0 0 0 837 39L767,39A15 15 0 0 0 752 55A15 15 0 0 0 767 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="802" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="875,55 863,59 863,50" style="fill:rgb(0,0,0)"/> +<path d="M852,55L869,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M890,70L914,70A15 15 0 0 0 929 55A15 15 0 0 0 914 39L890,39A15 15 0 0 0 875 55A15 15 0 0 0 890 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="902" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="1022,55 1010,59 1010,50" style="fill:rgb(0,0,0)"/> +<path d="M929,55L1016,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,55 L 1029,55 Q 1037,55 1037,62 L 1037,70" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,55 740,59 740,50" style="fill:rgb(0,0,0)"/> +<path d="M710,17 L 718,17 Q 725,17 725,32 L 725,40 Q 725,55 735,55 L 746,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M752,107L801,107L801,77L752,77Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="776" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">expr</text> +<polygon points="824,92 812,97 812,88" style="fill:rgb(0,0,0)"/> +<path d="M801,92L818,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M839,108L930,108A15 15 0 0 0 945 92A15 15 0 0 0 930 77L839,77A15 15 0 0 0 824 92A15 15 0 0 0 839 108Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="885" y="92" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">FOLLOWING</text> +<polygon points="1022,92 1010,97 1010,88" style="fill:rgb(0,0,0)"/> +<path d="M945,92L1016,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M1022,92 L 1029,92 Q 1037,92 1037,100 L 1037,107" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="752,92 740,97 740,88" style="fill:rgb(0,0,0)"/> +<path d="M725,39 L 725,77 Q 725,92 735,92 L 746,92" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,410L529,410A15 15 0 0 0 544 395A15 15 0 0 0 529 380L461,380A15 15 0 0 0 446 395A15 15 0 0 0 461 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,395 555,399 555,390" style="fill:rgb(0,0,0)"/> +<path d="M544,395L561,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,410L652,410A15 15 0 0 0 667 395A15 15 0 0 0 652 380L582,380A15 15 0 0 0 567 395A15 15 0 0 0 582 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="617" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">CURRENT</text> +<polygon points="690,395 678,399 678,390" style="fill:rgb(0,0,0)"/> +<path d="M667,395L684,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M705,410L729,410A15 15 0 0 0 744 395A15 15 0 0 0 729 380L705,380A15 15 0 0 0 690 395A15 15 0 0 0 705 410Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="717" y="395" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ROW</text> +<polygon points="767,395 756,399 756,390" style="fill:rgb(0,0,0)"/> +<path d="M744,395L762,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,395 L 775,395 Q 782,395 782,402 L 782,410" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,448L529,448A15 15 0 0 0 544 433A15 15 0 0 0 529 417L461,417A15 15 0 0 0 446 433A15 15 0 0 0 461 448Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="433" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,433 555,437 555,428" style="fill:rgb(0,0,0)"/> +<path d="M544,433L561,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,448L625,448A15 15 0 0 0 640 433A15 15 0 0 0 625 417L582,417A15 15 0 0 0 567 433A15 15 0 0 0 582 448Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="604" y="433" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">GROUP</text> +<polygon points="767,433 756,437 756,428" style="fill:rgb(0,0,0)"/> +<path d="M640,433L762,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,433 L 775,433 Q 782,433 782,440 L 782,448" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,486L529,486A15 15 0 0 0 544 470A15 15 0 0 0 529 455L461,455A15 15 0 0 0 446 470A15 15 0 0 0 461 486Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="470" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,470 555,475 555,466" style="fill:rgb(0,0,0)"/> +<path d="M544,470L561,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,486L604,486A15 15 0 0 0 619 470A15 15 0 0 0 604 455L582,455A15 15 0 0 0 567 470A15 15 0 0 0 582 486Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="593" y="470" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">TIES</text> +<polygon points="767,470 756,475 756,466" style="fill:rgb(0,0,0)"/> +<path d="M619,470L762,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M767,470 L 775,470 Q 782,470 782,478 L 782,485" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M461,372L529,372A15 15 0 0 0 544 357A15 15 0 0 0 529 342L461,342A15 15 0 0 0 446 357A15 15 0 0 0 461 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="495" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">EXCLUDE</text> +<polygon points="567,357 555,361 555,353" style="fill:rgb(0,0,0)"/> +<path d="M544,357L561,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M582,372L591,372A15 15 0 0 0 606 357A15 15 0 0 0 591 342L582,342A15 15 0 0 0 567 357A15 15 0 0 0 582 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="586" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">NO</text> +<polygon points="629,357 617,361 617,353" style="fill:rgb(0,0,0)"/> +<path d="M606,357L623,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M644,372L700,372A15 15 0 0 0 715 357A15 15 0 0 0 700 342L644,342A15 15 0 0 0 629 357A15 15 0 0 0 644 372Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="672" y="357" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">OTHERS</text> +<polygon points="767,357 756,361 756,353" style="fill:rgb(0,0,0)"/> +<path d="M715,357L762,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="890,516 879,520 879,511" style="fill:rgb(0,0,0)"/> +<path d="M767,357 L 775,357 Q 782,357 782,372 L 782,501 Q 782,516 797,516 L 870,516 L 885,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="894" cy="516" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="710,304 722,300 722,308" style="fill:rgb(0,0,0)"/> +<path d="M1001,304L716,304" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="527,516 516,520 516,511" style="fill:rgb(0,0,0)"/> +<path d="M710,304 L 434,304 Q 419,304 419,319 L 419,501 Q 419,516 434,516 L 507,516 L 522,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M527,516L797,516" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,357 434,361 434,353" style="fill:rgb(0,0,0)"/> +<path d="M419,342 L 419,349 Q 419,357 430,357 L 440,357" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,395 434,399 434,390" style="fill:rgb(0,0,0)"/> +<path d="M419,380 L 419,387 Q 419,395 430,395 L 440,395" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,433 434,437 434,428" style="fill:rgb(0,0,0)"/> +<path d="M419,417 L 419,425 Q 419,433 430,433 L 440,433" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="446,470 434,475 434,466" style="fill:rgb(0,0,0)"/> +<path d="M419,455 L 419,463 Q 419,470 430,470 L 440,470" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +</div> +</div> +</div> + + +<p>Common Table Expressions or CTEs act like temporary <a href="lang_createview.html">views</a> that exist +only for the duration of a single SQL statement. There are two kinds of +common table expressions: "ordinary" and "recursive". Ordinary +common table expressions are helpful for making +queries easier to understand by factoring +subqueries out of the main SQL statement. +Recursive common table expressions +provide the ability to do hierarchical or +recursive queries of trees and graphs, a capability +that is not otherwise available in the SQL language. + +</p><p>All common table expressions (ordinary and recursive) are +created by prepending a WITH clause in front of a <a href="lang_select.html">SELECT</a>, <a href="lang_insert.html">INSERT</a>, <a href="lang_delete.html">DELETE</a>, +or <a href="lang_update.html">UPDATE</a> statement. A single WITH clause can specify one or more +common table expressions, some of which are ordinary and some of which +are recursive. + +<a name="ordinarycte"></a> + +</p><h1 id="ordinary_common_table_expressions"><span>2. </span>Ordinary Common Table Expressions</h1> + +<p>An ordinary common table expression works as if it were a <a href="lang_createview.html">view</a> that +exists for the duration of a single statement. Ordinary common table +expressions are useful for factoring out subqueries and making the overall +SQL statement easier to read and understand. + +</p><p>A WITH clause can contain ordinary common table expressions even if +it includes the RECURSIVE keyword. The use of RECURSIVE does not force +common table expressions to be recursive. + +<a name="recursivecte"></a> + +</p><h1 id="recursive_common_table_expressions"><span>3. </span>Recursive Common Table Expressions</h1> + +<p>A recursive common table expression can be used to write a query that +walks a tree or graph. A recursive common table expression has the same +basic syntax as an ordinary common table expression, but with the following +additional attributes: + +</p><ol> +<li> The "<a href="syntax/select-stmt.html">select-stmt</a>" must be a <a href="lang_select.html#compound">compound select</a>. That is to say, + the CTE body must be two or more individual SELECT statements + separated by compound operators like UNION, UNION ALL, INTERSECT, + or EXCEPT. +</li><li> One or more of the individual SELECT statements that make up + the compound must be + "recursive". A SELECT statement is a recursive if + its FROM clause contains exactly one reference to the + the CTE table (the table named on the left-hand side of the + AS clause). +</li><li> One or more of the SELECT statements in the compound must be + non-recursive. +</li><li> All non-recursive SELECT statements must occur before any + recursive SELECT statements. +</li><li> The recursive SELECT statements must be separated from the + non-recursive SELECT statements + and from each other by the UNION or UNION ALL operators. + If there are two or more recursive SELECT statements, they all must + be separated from each other using the same operator that separates + the first recursive SELECT from the last non-recursive SELECT statement. +</li><li> Recursive SELECT statements may not use + <a href="lang_aggfunc.html">aggregate functions</a> or <a href="windowfunctions.html">window functions</a>. +</li></ol> + +<p>To put it another way, a recursive common table expression must +look something like the following: + +<p><b><a href="syntax/recursive-cte.html">recursive-cte:</a></b> +<button id='x2299' onclick='hideorshow("x2299","x2300")'>hide</button></p> + <div id='x2300' class='imgcontainer'> + <div style="max-width:874px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 874.291 72.36"> +<circle cx="5" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,17 20,21 20,12" style="fill:rgb(0,0,0)"/> +<path d="M9,17L26,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M32,32L169,32L169,2L32,2Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="100" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">cte-table-name</text> +<polygon points="192,17 180,21 180,12" style="fill:rgb(0,0,0)"/> +<path d="M169,17L186,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M207,32L211,32A15 15 0 0 0 226 17A15 15 0 0 0 211 2L207,2A15 15 0 0 0 192 17A15 15 0 0 0 207 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="209" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">AS</text> +<polygon points="249,17 237,21 237,12" style="fill:rgb(0,0,0)"/> +<path d="M226,17L243,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M264,32A15 15 0 0 0 279 17A15 15 0 0 0 264 2A15 15 0 0 0 249 17A15 15 0 0 0 264 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="264" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="302,17 291,21 291,12" style="fill:rgb(0,0,0)"/> +<path d="M279,17L296,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M317,32L403,32A15 15 0 0 0 418 17A15 15 0 0 0 403 2L317,2A15 15 0 0 0 302 17A15 15 0 0 0 317 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="360" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">initial-select</text> +<polygon points="459,55 448,59 448,50" style="fill:rgb(0,0,0)"/> +<path d="M418,17 L 425,17 Q 433,17 433,32 L 433,40 Q 433,55 443,55 L 454,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M474,70L518,70A15 15 0 0 0 533 55L533,55A15 15 0 0 0 518 39L474,39A15 15 0 0 0 459 55L459,55A15 15 0 0 0 474 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="496" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNION</text> +<polygon points="556,55 545,59 545,50" style="fill:rgb(0,0,0)"/> +<path d="M533,55L550,55" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M571,70L586,70A15 15 0 0 0 601 55L601,55A15 15 0 0 0 586 39L571,39A15 15 0 0 0 556 55L556,55A15 15 0 0 0 571 70Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="579" y="55" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">ALL</text> +<polygon points="643,17 631,21 631,12" style="fill:rgb(0,0,0)"/> +<path d="M601,55 L 609,55 Q 616,55 616,40 L 616,32 Q 616,17 627,17 L 637,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M658,32L773,32A15 15 0 0 0 788 17A15 15 0 0 0 773 2L658,2A15 15 0 0 0 643 17A15 15 0 0 0 658 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="715" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">recursive-select</text> +<polygon points="811,17 800,21 800,12" style="fill:rgb(0,0,0)"/> +<path d="M788,17L805,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M826,32A15 15 0 0 0 841 17A15 15 0 0 0 826 2A15 15 0 0 0 811 17A15 15 0 0 0 826 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="826" y="17" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="864,17 853,21 853,12" style="fill:rgb(0,0,0)"/> +<path d="M841,17L859,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="868" cy="17" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="459,17 448,21 448,12" style="fill:rgb(0,0,0)"/> +<path d="M418,17L454,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M474,32L518,32A15 15 0 0 0 533 17A15 15 0 0 0 518 2L474,2A15 15 0 0 0 459 17A15 15 0 0 0 474 32Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="496" y="17" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">UNION</text> +<path d="M533,17L631,17" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +<p><b><a href="syntax/cte-table-name.html">cte-table-name:</a></b> +<button id='x2301' onclick='hideorshow("x2301","x2302")'>show</button></p> + <div id='x2302' style='display:none;' class='imgcontainer'> + <div style="max-width:475px"><svg xmlns='http://www.w3.org/2000/svg' class="pikchr" viewBox="0 0 475.949 91.8"> +<circle cx="5" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="32,36 20,41 20,32" style="fill:rgb(0,0,0)"/> +<path d="M9,36L26,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M47,51L122,51A15 15 0 0 0 137 36A15 15 0 0 0 122 21L47,21A15 15 0 0 0 32 36A15 15 0 0 0 47 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="85" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">table-name</text> +<polygon points="173,36 162,41 162,32" style="fill:rgb(0,0,0)"/> +<path d="M137,36L168,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M188,51A15 15 0 0 0 204 36A15 15 0 0 0 188 21A15 15 0 0 0 173 36A15 15 0 0 0 188 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="188" y="36" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">(</text> +<polygon points="240,36 228,41 228,32" style="fill:rgb(0,0,0)"/> +<path d="M204,36L234,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M255,51L349,51A15 15 0 0 0 364 36A15 15 0 0 0 349 21L255,21A15 15 0 0 0 240 36A15 15 0 0 0 255 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="302" y="36" text-anchor="middle" fill="rgb(0,0,0)" dominant-baseline="central">column-name</text> +<polygon points="400,36 388,41 388,32" style="fill:rgb(0,0,0)"/> +<path d="M364,36L394,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M415,51A15 15 0 0 0 430 36A15 15 0 0 0 415 21A15 15 0 0 0 400 36A15 15 0 0 0 415 51Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="415" y="36" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">)</text> +<polygon points="466,36 455,41 455,32" style="fill:rgb(0,0,0)"/> +<path d="M430,36L460,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<circle cx="470" cy="36" r="3.6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M302,89A15 15 0 0 0 317 74L317,74A15 15 0 0 0 302 59A15 15 0 0 0 287 74L287,74A15 15 0 0 0 302 89Z" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<text x="302" y="74" text-anchor="middle" font-weight="bold" fill="rgb(0,0,0)" dominant-baseline="central">,</text> +<polygon points="317,74 328,70 328,78" style="fill:rgb(0,0,0)"/> +<path d="M364,36 L 371,36 Q 379,36 379,51 L 379,59 Q 379,74 364,74 L 338,74 L 323,74" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M287,74 L 232,74 Q 217,74 217,59 L 217,51 Q 217,36 224,36 L 232,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<polygon points="302,6 290,10 290,2" style="fill:rgb(0,0,0)"/> +<path d="M137,36 L 145,36 Q 152,36 152,21 L 152,21 Q 152,6 167,6 L 281,6 L 296,6" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +<path d="M302,6 L 422,6 Q 437,6 437,21 L 437,21 Q 437,36 445,36 L 452,36" style="fill:none;stroke-width:2.16;stroke:rgb(0,0,0);" /> +</svg> +</div> +</div> +</div> + + +</p><p>In the diagram above, <span class='yyterm'>initial-select</span> means one or more +non-recursive SELECT statements and <span class='yyterm'>recursive-select</span> means +one or more recursive SELECT statements. The most common case is for there +to be exactly one <span class='yyterm'>initial-select</span> and exactly one +<span class='yyterm'>recursive-select</span> but more than one of each is allowed.</p> + +<p>Call the table named by the <a href="syntax/cte-table-name.html">cte-table-name</a> in a recursive +common table expression the "recursive table". +In the <a href="syntax/recursive-cte.html">recursive-cte</a> bubble diagram above, the recursive +table must appear exactly once in the FROM clause of each +top-level SELECT statement in the <span class='yyterm'>recursive-select</span> +and must not appear anywhere else in either the +<span class='yyterm'>initial-select</span> or the +<span class='yyterm'>recursive-select</span>, including subqueries. +The <span class='yyterm'>initial-select</span> may be +a <a href="lang_select.html#compound">compound select</a>, but it may not include an ORDER BY, LIMIT, or OFFSET. +The <span class='yyterm'>recursive-select</span> may also be a <a href="lang_select.html#compound">compound select</a> with +the restriction that all elements of that compound must be separated by +the same UNION or UNION ALL operator that separates +<span class='yyterm'>initial-select</span> from <span class='yyterm'>recursive-select</span>. +The <span class='yyterm'>recursive-select</span> is allowed to include an +ORDER BY, LIMIT, and/or OFFSET but may not use +<a href="lang_aggfunc.html">aggregate functions</a> or <a href="windowfunctions.html">window functions</a>. + +</p><p>The ability for the <span class='yyterm'>recursive-select</span> to be a compound +was added in <a href="releaselog/3_34_0.html">version 3.34.0</a> (2020-12-01). In earlier versions of +SQLite, the <span class='yyterm'>recursive-select</span> could only be a single +simple SELECT statement.</p> + +<p>The basic algorithm for computing the content of the recursive table +is as follows: + +</p><ol> +<li> Run the <span class='yyterm'>initial-select</span> and add the results to a queue. +</li><li> While the queue is not empty: +<ol type="a"> +<li> Extract a single row from the queue. +</li><li> Insert that single row into the recursive table +</li><li> Pretend that the single row just extracted is the only + row in the recursive table and run the recursive-select, + adding all results to the queue. +</li></ol> +</li></ol> + +<p>The basic procedure above may modified by the following additional rules: + +</p><ul> +<li><p> + If a UNION operator connects the <span class='yyterm'>initial-select</span> with the + <span class='yyterm'>recursive-select</span>, then only add rows to the queue if + no identical row has + been previously added to the queue. Repeated rows are discarded before being + added to the queue even if the repeated rows have already been extracted + from the queue by the recursion step. If the operator is UNION ALL, + then all rows generated by both the <span class='yyterm'>initial-select</span> and the + <span class='yyterm'>recursive-select</span> are always added to the queue even if + they are repeats. + When determining if a row is repeated, NULL values compare + equal to one another and not equal to any other value. +</p></li><li><p> + The LIMIT clause, if present, determines the maximum number of rows that + will ever be added to the recursive table in step 2b. + Once the limit is reached, the recursion stops. + A limit of zero means that no rows are ever added to the + recursive table, and a negative limit means an unlimited number of rows + may be added to the recursive table. +</p></li><li><p> + The OFFSET clause, if it is present and has a positive value N, prevents the + first N rows from being added to the recursive table. + The first N rows are still processed + by the <span class='yyterm'>recursive-select</span> — they + just are not added to the recursive table. Rows are not counted toward + fulfilling the LIMIT until all OFFSET rows have been skipped. +</p></li><li><p> + If an ORDER BY clause is present, it determines the order in which rows + are extracted from the queue in step 2a. If there is no ORDER BY clause, + then the order in which rows are extracted is undefined. (In the current + implementation, the queue becomes a FIFO if the ORDER BY clause is omitted, + but applications should not depend on that fact since it might change.) +</p></li></ul> + +<a name="rcex1"></a> + +<h2 id="recursive_query_examples"><span>3.1. </span>Recursive Query Examples</h2> + +<p>The following query returns all integers between 1 and 1000000: + +</p><blockquote><pre> +WITH RECURSIVE + cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1000000) +SELECT x FROM cnt; +</pre></blockquote> + +<p>Consider how this query works. The initial-select +runs first and returns a single row +with a single column "1". This one row is added to the queue. In +step 2a, that one row is extracted from the queue and added to "cnt". +Then the recursive-select is run in accordance with step 2c generating +a single new row with value "2" to add to the queue. The queue still +has one row, so step 2 repeats. The "2" row is extracted and added to the +recursive table by steps 2a and 2b. Then the row containing 2 is used +as if it were the complete content of the recursive table and the +recursive-select is run again, resulting in a row with value "3" being added +to the queue. This repeats 999999 times until finally at step 2a the +only value on the queue is a row containing 1000000. That row is +extracted and added to the recursive table. But this time, the +WHERE clause causes the recursive-select to return no rows, so the +queue remains empty and the recursion stops. + +</p><p><b>Optimization note:</b> +In the discussion above, statements like "insert the row into +the recursive table" should be understood conceptually, not literally. +It sounds as if SQLite is accumulating a huge table +containing one million rows, then going back and scanning that table +from top to bottom to generate the result. What really happens +is that the query optimizer sees that values in the +"cnt" recursive table are only used once. So as each row is added to +the recursive table, that row is immediately returned as a result of the main +SELECT statement and then discarded. SQLite does <em>not</em> accumulate +a temporary table containing a million rows. Very little memory is +needed to run the above example. However, if the example had used +UNION instead of UNION ALL, then SQLite would have had to keep around +all previously generated content in order to check for duplicates. +For this reason, programmers should strive to use UNION ALL instead +of UNION when feasible. + +</p><p>Here is a variation on the previous example: + +</p><blockquote><pre> +WITH RECURSIVE + cnt(x) AS ( + SELECT 1 + UNION ALL + SELECT x+1 FROM cnt + LIMIT 1000000 + ) +SELECT x FROM cnt; +</pre></blockquote> + +<p>There are two differences in this variation. The initial-select is +"SELECT 1" instead of "VALUES(1)". But those are just different +syntaxes for saying exactly the same thing. The other change is that the +recursion is stopped by a LIMIT rather than a WHERE clause. The use of +LIMIT means that when the one-millionth row is added to the "cnt" table +(and returned by the main SELECT, thanks to the query optimizer) +then the recursion stops immediately regardless of how many rows might be +left in the queue. On more complex queries, it can sometimes be +difficult to ensure that the WHERE clause will eventually cause the +queue to drain and the recursion to terminate. But the LIMIT clause will +always stop the recursion. So it is good practice to always include a +LIMIT clause as a safety if an upper bound on the size of the recursion +is known. + +<a name="rcex2"></a> + +</p><h2 id="hierarchical_query_examples"><span>3.2. </span>Hierarchical Query Examples</h2> + +<p>Consider a table that describes the members of an organization as +well as the chain-of-command within that organization: + +</p><blockquote><pre> +CREATE TABLE org( + name TEXT PRIMARY KEY, + boss TEXT REFERENCES org, + height INT, + -- other content omitted +); +</pre></blockquote> + +<p>Every member in the organization has a name, and most members have +a single boss. (The head of the whole organization has a NULL +"boss" field.) The rows of the "org" table form a tree. + +</p><p>Here is a query that computes the average height over everyone +in Alice's organization, including Alice: + +</p><blockquote><pre> +WITH RECURSIVE + works_for_alice(n) AS ( + VALUES('Alice') + UNION + SELECT name FROM org, works_for_alice + WHERE org.boss=works_for_alice.n + ) +SELECT avg(height) FROM org + WHERE org.name IN works_for_alice; +</pre></blockquote> + +<p>The next example uses two +common table expressions in a single WITH clause. +The following table records a family tree: + +</p><blockquote><pre> +CREATE TABLE family( + name TEXT PRIMARY KEY, + mom TEXT REFERENCES family, + dad TEXT REFERENCES family, + born DATETIME, + died DATETIME, -- NULL if still alive + -- other content +); +</pre></blockquote> + +<p>The "family" table is similar to the earlier "org" table except that +now there are two parents to each member. +We want to know all living ancestors of Alice, from oldest to youngest. +An ordinary common table expression, "parent_of", is defined first. That +ordinary CTE is a view that can be used to find all parents of any +individual. That ordinary CTE is then used in the "ancestor_of_alice" +recursive CTE. The recursive CTE is then used in the final query: + +</p><blockquote><pre> +WITH RECURSIVE + parent_of(name, parent) AS + (SELECT name, mom FROM family UNION SELECT name, dad FROM family), + ancestor_of_alice(name) AS + (SELECT parent FROM parent_of WHERE name='Alice' + UNION ALL + SELECT parent FROM parent_of JOIN ancestor_of_alice USING(name)) +SELECT family.name FROM ancestor_of_alice, family + WHERE ancestor_of_alice.name=family.name + AND died IS NULL + ORDER BY born; +</pre></blockquote> + +<a name="rcex3"></a> + +<h2 id="queries_against_a_graph"><span>3.3. </span>Queries Against A Graph</h2> + +<p>Suppose you have an undirected graph where each node is +identified by an integer and edges are defined by a table like +this: + +</p><blockquote><pre> +CREATE TABLE edge(aa INT, bb INT); +CREATE INDEX edge_aa ON edge(aa); +CREATE INDEX edge_bb ON edge(bb); +</pre></blockquote> + +<p>The indexes are not required, but they do help performance +for large graphs. +To find all nodes of the graph that are connected to +node 59, use a query similar to the following: + +</p><blockquote><pre> +WITH RECURSIVE nodes(x) AS ( + SELECT 59 + UNION + SELECT aa FROM edge JOIN nodes ON bb=x + UNION + SELECT bb FROM edge JOIN nodes ON aa=x +) +SELECT x FROM nodes; +</pre></blockquote> + +<p> +The <span class='yyterm'>initial-select</span> in this case is the simple query +"SELECT 59". This establishes the base case. The +<span class='yyterm'>recursive-select</span> consists of the other two +SELECT statements. The first recursive SELECT follows edges +in the bb-to-aa direction and the second recursive SELECT follows +edges in the aa-to-bb direction. UNION is used instead of +UNION ALL to prevent the recursion from entering an infinite +loop if the graph contains cycles. +</p> + +<p>Here is a real-world example of using a graph query against a +directed graph: +A version control system (VCS) will typically store the evolving +versions of a project as a directed acyclic graph (DAG). Call each +version of the project a "checkin". A single +checkin can have zero or more parents. Most checkins (except the +first) have a single parent, but in the case of a merge, a checkin +might have two or three or more parents. A schema to keep track of +checkins and the order in which they occur might look something like +this: + +</p><blockquote><pre> +CREATE TABLE checkin( + id INTEGER PRIMARY KEY, + mtime INTEGER -- timestamp when this checkin occurred +); +CREATE TABLE derivedfrom( + xfrom INTEGER NOT NULL REFERENCES checkin, -- parent checkin + xto INTEGER NOT NULL REFERENCES checkin, -- derived checkin + PRIMARY KEY(xfrom,xto) +); +CREATE INDEX derivedfrom_back ON derivedfrom(xto,xfrom); +</pre></blockquote> + +<p>This graph is acyclic. And we assume that the mtime of every +child checkin is no less than the mtime of all its parents. But +unlike the earlier examples, this graph might have multiple paths of +differing lengths between any two checkins. + +</p><p>We want to know the twenty most recent ancestors in time (out of +the thousands and thousands of ancestors in the whole DAG) for +checkin "@BASELINE". (A query similar to this is used +by the <a href="http://www.fossil-scm.org/">Fossil</a> VCS to +show the N most recent ancestors of a checkin. For example: +<a href="http://www.sqlite.org/src/timeline?p=trunk&n=30">http://www.sqlite.org/src/timeline?p=trunk&n=30</a>.) + +</p><blockquote><pre> +WITH RECURSIVE + ancestor(id,mtime) AS ( + SELECT id, mtime FROM checkin WHERE id=@BASELINE + UNION + SELECT derivedfrom.xfrom, checkin.mtime + FROM ancestor, derivedfrom, checkin + WHERE ancestor.id=derivedfrom.xto + AND checkin.id=derivedfrom.xfrom + ORDER BY checkin.mtime DESC + LIMIT 20 + ) +SELECT * FROM checkin JOIN ancestor USING(id); +</pre></blockquote> + +<p> +The "ORDER BY checkin.mtime DESC" term in the recursive-select makes +the query run much faster by preventing it from following +branches that merge checkins +from long ago. The ORDER BY forces the recursive-select to focus +on the most recent checkins, the ones we want. Without the ORDER BY +on the recursive-select, one would be forced to compute the complete set of +thousands of ancestors, sort them all by mtime, then take the top twenty. +The ORDER BY essentially sets up a priority queue that +forces the recursive query to look at the most recent ancestors first, +allowing the use of a LIMIT clause to restrict the scope of the +query to just the checkins of interest. + +<a name="withorderby"></a> + +</p><h2 id="controlling_depth_first_versus_breadth_first_search_of_a_tree_using_order_by"><span>3.4. </span>Controlling Depth-First Versus Breadth-First Search Of a Tree +Using ORDER BY</h2> + +<p>An ORDER BY clause on the recursive-select can be used to control +whether the search of a tree is depth-first or breadth-first. To +illustrate, we will use a variation on the "org" table from an example +above, without the "height" column, and with some real data inserted: + +</p><blockquote><pre> +CREATE TABLE org( + name TEXT PRIMARY KEY, + boss TEXT REFERENCES org +) WITHOUT ROWID; +INSERT INTO org VALUES('Alice',NULL); +INSERT INTO org VALUES('Bob','Alice'); +INSERT INTO org VALUES('Cindy','Alice'); +INSERT INTO org VALUES('Dave','Bob'); +INSERT INTO org VALUES('Emma','Bob'); +INSERT INTO org VALUES('Fred','Cindy'); +INSERT INTO org VALUES('Gail','Cindy'); +</pre></blockquote> + +<p>Here is a query to show the tree structure in a breadth-first pattern: + +</p><blockquote><pre> +WITH RECURSIVE + under_alice(name,level) AS ( + VALUES('Alice',0) + UNION ALL + SELECT org.name, under_alice.level+1 + FROM org JOIN under_alice ON org.boss=under_alice.name + ORDER BY 2 + ) +SELECT substr('..........',1,level*3) || name FROM under_alice; +</pre></blockquote> + +<p>The "ORDER BY 2" (which means the same as "ORDER BY under_alice.level+1") +causes higher levels in the organization chart (with smaller "level" values) +to be processed first, resulting in a breadth-first search. The output is: + +</p><blockquote><pre> +Alice +...Bob +...Cindy +......Dave +......Emma +......Fred +......Gail +</pre></blockquote> + +<p>But if we change the ORDER BY clause to add the "DESC" modifier, that will +cause lower levels in the organization (with larger "level" values) to be +processed first by the recursive-select, resulting in a depth-first search: + +</p><blockquote><pre> +WITH RECURSIVE + under_alice(name,level) AS ( + VALUES('Alice',0) + UNION ALL + SELECT org.name, under_alice.level+1 + FROM org JOIN under_alice ON org.boss=under_alice.name + ORDER BY 2 <b>DESC</b> + ) +SELECT substr('..........',1,level*3) || name FROM under_alice; +</pre></blockquote> + +<p>The output of this revised query is: + +</p><blockquote><pre> +Alice +...Bob +......Dave +......Emma +...Cindy +......Fred +......Gail +</pre></blockquote> + +<p>When the ORDER BY clause is omitted from the recursive-select, the +queue behaves as a FIFO, which results in a breadth-first search. + + +<a name="mandelbrot"></a> + +</p><h2 id="outlandish_recursive_query_examples"><span>3.5. </span>Outlandish Recursive Query Examples</h2> + +<p>The following query computes an approximation of the Mandelbrot Set +and outputs the result as ASCII-art: + +</p><blockquote><pre> +WITH RECURSIVE + xaxis(x) AS (VALUES(-2.0) UNION ALL SELECT x+0.05 FROM xaxis WHERE x<1.2), + yaxis(y) AS (VALUES(-1.0) UNION ALL SELECT y+0.1 FROM yaxis WHERE y<1.0), + m(iter, cx, cy, x, y) AS ( + SELECT 0, x, y, 0.0, 0.0 FROM xaxis, yaxis + UNION ALL + SELECT iter+1, cx, cy, x*x-y*y + cx, 2.0*x*y + cy FROM m + WHERE (x*x + y*y) < 4.0 AND iter<28 + ), + m2(iter, cx, cy) AS ( + SELECT max(iter), cx, cy FROM m GROUP BY cx, cy + ), + a(t) AS ( + SELECT group_concat( substr(' .+*#', 1+min(iter/7,4), 1), '') + FROM m2 GROUP BY cy + ) +SELECT group_concat(rtrim(t),x'0a') FROM a; +</pre></blockquote> + +<p>In this query, the "xaxis" and "yaxis" CTEs define the grid of points for +which the Mandelbrot Set will be approximated. Each row in the +"m(iter,cx,cy,x,y)" CTE means that after "iter" iterations, the Mandelbrot +iteration starting at cx,cy has reached point x,y. The number of iterations +in this example is limited to 28 (which severely limits the resolution of +the computation, but is sufficient for low-resolution ASCII-art output). +The "m2(iter,cx,cy)" CTE holds the maximum number of iterations reached when +starting at point cx,cy. +Finally, each row in the "a(t)" CTE holds a string +which is a single line of the output ASCII-art. +The SELECT statement at the end just queries the "a" CTE to +retrieve all lines of ASCII-art, one by one. + +</p><p>Running the query above in an SQLite <a href="cli.html">command-line shell</a> results +in the following output: + +</p><blockquote><pre> + ....# + ..#*.. + ..+####+. + .......+####.... + + ..##+*##########+.++++ + .+.##################+. + .............+###################+.+ + ..++..#.....*#####################+. + ...+#######++#######################. + ....+*################################. + #############################################... + ....+*################################. + ...+#######++#######################. + ..++..#.....*#####################+. + .............+###################+.+ + .+.##################+. + ..##+*##########+.++++ + .......+####.... + + ..+####+. + ..#*.. + ....# + +. +</pre></blockquote> + +<a name="sudoku"></a> + +<p>This next query solves a Sudoku puzzle. The state of the puzzle is +defined by an 81-character string formed by reading entries from the +puzzle box row by row from left to right and then from top to bottom. +Blank squares in the puzzle are denoted by a "." character. +Thus the input string: + +</p><blockquote> +53..7....6..195....98....6.8...6...34..8.3..17...2...6.6....28....419..5....8..79 +</blockquote> + +<p>Corresponds to a puzzle like this: + +</p><blockquote> +<table border="1" cellpadding="5"> +<tr><td>5</td><td>3</td><td> </td><td> </td><td>7</td><td> </td><td> </td><td> </td><td> +</td></tr><tr><td>6</td><td> </td><td> </td><td>1</td><td>9</td><td>5</td><td> </td><td> </td><td> +</td></tr><tr><td> </td><td>9</td><td>8</td><td> </td><td> </td><td> </td><td> </td><td>6</td><td> +</td></tr><tr><td>8</td><td> </td><td> </td><td> </td><td>6</td><td> </td><td> </td><td> </td><td>3 +</td></tr><tr><td>4</td><td> </td><td> </td><td>8</td><td> </td><td>3</td><td> </td><td> </td><td>1 +</td></tr><tr><td>7</td><td> </td><td> </td><td> </td><td>2</td><td> </td><td> </td><td> </td><td>6 +</td></tr><tr><td> </td><td>6</td><td> </td><td> </td><td> </td><td> </td><td>2</td><td>8</td><td> +</td></tr><tr><td> </td><td> </td><td> </td><td>4</td><td>1</td><td>9</td><td> </td><td> </td><td>5 +</td></tr><tr><td> </td><td> </td><td> </td><td> </td><td>8</td><td> </td><td> </td><td>7</td><td>9 +</td></tr></table> +</blockquote> + +<p>This is the query that solves the puzzle: + +</p><blockquote><pre> +WITH RECURSIVE + input(sud) AS ( + VALUES('53..7....6..195....98....6.8...6...34..8.3..17...2...6.6....28....419..5....8..79') + ), + digits(z, lp) AS ( + VALUES('1', 1) + UNION ALL SELECT + CAST(lp+1 AS TEXT), lp+1 FROM digits WHERE lp<9 + ), + x(s, ind) AS ( + SELECT sud, instr(sud, '.') FROM input + UNION ALL + SELECT + substr(s, 1, ind-1) || z || substr(s, ind+1), + instr( substr(s, 1, ind-1) || z || substr(s, ind+1), '.' ) + FROM x, digits AS z + WHERE ind>0 + AND NOT EXISTS ( + SELECT 1 + FROM digits AS lp + WHERE z.z = substr(s, ((ind-1)/9)*9 + lp, 1) + OR z.z = substr(s, ((ind-1)%9) + (lp-1)*9 + 1, 1) + OR z.z = substr(s, (((ind-1)/3) % 3) * 3 + + ((ind-1)/27) * 27 + lp + + ((lp-1) / 3) * 6, 1) + ) + ) +SELECT s FROM x WHERE ind=0; +</pre></blockquote> + +<p>The "input" CTE defines the input puzzle. +The "digits" CTE defines a table that holds all digits between 1 and 9. +The work of solving the puzzle is undertaken by the "x" CTE. +An entry in x(s,ind) means that the 81-character string "s" is a valid +sudoku puzzle (it has no conflicts) and that the first unknown character +is at position "ind", or ind==0 if all character positions are filled in. +The goal, then, is to compute entries for "x" with an "ind" of 0. + +</p><p>The solver works by adding new entries to the "x" recursive table. +Given prior entries, the recursive-select tries to fill in a single new +position with all values between 1 and 9 that actually work in that +position. The complicated "NOT EXISTS" subquery is the magic that +figures out whether or not each candidate "s" string is a valid +sudoku puzzle or not. + +</p><p>The final answer is found by looking for a string with ind==0. +If the original sudoku problem did not have a unique solution, then +the query will return all possible solutions. If the original problem +was unsolvable, then no rows will be returned. In this case, the unique +answer is: + +</p><blockquote> +534678912672195348198342567859761423426853791713924856961537284287419635345286179 +</blockquote> + +<p>The solution was computed in less than 300 milliseconds on a modern +workstation. + +<a name="mathint"></a> + +</p><h1 id="materialization_hints"><span>4. </span>Materialization Hints</h1> + +<p> +The "AS MATERIALIZED" and "AS NOT MATERIALIZED" forms of a common table expression +are non-standard SQL syntax copied from PostgreSQL. Using MATERIALIZED or +NOT MATERIALIZED after the AS keyword provides non-binding hints to the query +planner about how the CTE should be implemented. + +</p><p> +If the MATERIALIZED phrase is used, then <span class='yynonterm'>select-stmt</span> is +likely evaluated to generate an ephemeral table that is held in memory or a +temporary disk file, to be used in place of the +CTE table name whenever that table name appears in the subsequent SQL. +Because the <span class='yynonterm'>select-stmt</span> is evaluated immediately, +the opportunity to apply optimizations such as +<a href="optoverview.html#flattening">query flattening</a> or the <a href="optoverview.html#pushdown">push-down optimization</a>, is lost. +(The CTE then acts as an "optimization fence".) + +</p><p> +If the NOT MATERIALIZED phrase is used, then <span class='yynonterm'>select-stmt</span> +is substituted as a subquery in place of every occurrence of the CTE +table name. Optimizations such as <a href="optoverview.html#flattening">flattening</a> and +<a href="optoverview.html#pushdown">push-down</a> are then applied to the subquery as if +the subquery had by used in directly. In spite of its name, the NOT MATERIALIZED +phrase does not prohibit the use of materialization. The query planner +is still free to implement the subquery using materialization if +it feels that is the best solution. The true meaning of NOT MATERIALIZED +is closer to "TREAT LIKE ANY ORDINARY VIEW OR SUBQUERY". + +</p><p> +If neither hint is present, then SQLite 3.35.0 (2021-03-12) and +later process the CTE as if the MATERIALIZED phrase were present if the +CTE is used more than once, or as if the NOT MATERIALIZED phrase were +present if the CTE is used only once. Prior to SQLite 3.35.0, all +CTEs where treated as if the NOT MATERIALIZED phrase was present. +The decision of whether to treat a specific CTE as MATERIALIZED or +as NOT MATERIALIZED based on the number of uses is a heuristic that +is subject to change in future releases, if we come up with a better +query planning strategy. The difference is purely a matter of +performance. Equivalent answers should be computed either way. + +</p><p> +Applications should not depend upon the semantic effects of this hint +with respect to when or how often user-defined functions are called. +Future versions of the query planner may disregard this hint. + +</p><p> +The MATERIALIZED and NOT MATERIALIZED hints are only available in +SQLite version 3.35.0 (2021-03-12) and later. + +</p><h1 id="limitations_and_caveats"><span>5. </span>Limitations And Caveats</h1> + +<ul> +<li><p> +The WITH clause cannot be used within a <a href="lang_createtrigger.html">CREATE TRIGGER</a>. +</p></li><li><p> +The WITH clause must appear at the beginning of a top-level <a href="lang_select.html">SELECT</a> statement +or at the beginning of a subquery. The WITH clause cannot be prepended to +the second or subsequent SELECT statement of a <a href="lang_select.html#compound">compound select</a>. +</p></li><li><p> +The SQL:1999 spec requires that the RECURSIVE keyword follow WITH in any +WITH clause that includes a recursive common table expression. However, for +compatibility with SqlServer and Oracle, SQLite does not enforce this rule. +</p></li></ul> +<p align="center"><small><i>This page last modified on <a href="https://sqlite.org/docsrc/honeypot" id="mtimelink" data-href="https://sqlite.org/docsrc/finfo/pages/lang_with.in?m=b11c4b9e6087ba2a2">2022-01-17 12:21:35</a> UTC </small></i></p> + |