<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from target/generated-site/markdown/sqlpp/manual.md at 2024-04-01
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20240401" />
    <meta http-equiv="Content-Language" content="en" />
    <title>AsterixDB &#x2013; The SQL++ Query Language</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
    <script type="text/javascript" src="../js/apache-maven-fluido-1.7.min.js"></script>

  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href=".././" id="bannerLeft"><img src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2024-04-01</li>
      <li id="projectVersion" class="pull-right">Version: 0.9.9</li>
      <li class="pull-right"><a href="../index.html" title="Documentation Home">Documentation Home</a></li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
    <ul class="nav nav-list">
      <li class="nav-header">Get Started - Installation</li>
    <li><a href="../ncservice.html" title="Option 1: using NCService"><span class="none"></span>Option 1: using NCService</a></li>
    <li><a href="../ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
    <li><a href="../aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
      <li class="nav-header">AsterixDB Primer</li>
    <li><a href="../sqlpp/primer-sqlpp.html" title="Using SQL++"><span class="none"></span>Using SQL++</a></li>
      <li class="nav-header">Data Model</li>
    <li><a href="../datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
      <li class="nav-header">Queries</li>
    <li class="active"><a href="#"><span class="none"></span>The SQL++ Query Language</a></li>
    <li><a href="../SQLPP.html" title="Raw SQL++ Grammar"><span class="none"></span>Raw SQL++ Grammar</a></li>
    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
      <li class="nav-header">API/SDK</li>
    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP API</a></li>
    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
      <li class="nav-header">Advanced Features</li>
    <li><a href="../aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
    <li><a href="../feeds.html" title="Data Ingestion with Feeds"><span class="none"></span>Data Ingestion with Feeds</a></li>
    <li><a href="../udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
    <li><a href="../sqlpp/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
    <li><a href="../sqlpp/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
    <li><a href="../sqlpp/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
    <li><a href="../geo/quickstart.html" title="GIS Support Overview"><span class="none"></span>GIS Support Overview</a></li>
    <li><a href="../geo/functions.html" title="GIS Functions"><span class="none"></span>GIS Functions</a></li>
    <li><a href="../interval_join.html" title="Support of Interval Joins"><span class="none"></span>Support of Interval Joins</a></li>
    <li><a href="../spatial_join.html" title="Support of Spatial Joins"><span class="none"></span>Support of Spatial Joins</a></li>
    <li><a href="../sqlpp/arrayindex.html" title="Support of Array Indexes"><span class="none"></span>Support of Array Indexes</a></li>
      <li class="nav-header">Deprecated</li>
    <li><a href="../aql/primer.html" title="AsterixDB Primer: Using AQL"><span class="none"></span>AsterixDB Primer: Using AQL</a></li>
    <li><a href="../aql/manual.html" title="Queries: The Asterix Query Language (AQL)"><span class="none"></span>Queries: The Asterix Query Language (AQL)</a></li>
    <li><a href="../aql/builtins.html" title="Queries: Builtin Functions (AQL)"><span class="none"></span>Queries: Builtin Functions (AQL)</a></li>
</ul>
          <hr />
          <div id="poweredBy">
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
            </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
<h1>The SQL++ Query Language</h1>
<ul>

<li><a href="#Introduction">1. Introduction</a></li>
<li><a href="#Expressions">2. Expressions</a>
<ul>

<li><a href="#Operator_expressions">Operator Expressions</a>
<ul>

<li><a href="#Arithmetic_operators">Arithmetic Operators</a></li>
<li><a href="#Collection_operators">Collection Operators</a></li>
<li><a href="#Comparison_operators">Comparison Operators</a></li>
<li><a href="#Logical_operators">Logical Operators</a></li>
</ul>
</li>
<li><a href="#Quantified_expressions">Quantified Expressions</a></li>
<li><a href="#Path_expressions">Path Expressions</a></li>
<li><a href="#Primary_expressions">Primary Expressions</a>
<ul>

<li><a href="#Literals">Literals</a></li>
<li><a href="#Variable_references">Identifiers and Variable References</a></li>
<li><a href="#Parameter_references">Parameter References</a></li>
<li><a href="#Parenthesized_expressions">Parenthesized Expressions</a></li>
<li><a href="#Function_call_expressions">Function Calls</a></li>
<li><a href="#Case_expressions">Case Expressions</a></li>
<li><a href="#Constructors">Constructors</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Queries">3. Queries</a>
<ul>

<li><a href="#Select_clauses">SELECT Clauses</a>
<ul>

<li><a href="#Select_element">Select Value</a></li>
<li><a href="#SQL_select">SQL-style Select</a></li>
<li><a href="#Select_star">Select *</a></li>
<li><a href="#Select_distinct">Select Distinct</a></li>
<li><a href="#Unnamed_projections">Unnamed Projections</a></li>
<li><a href="#Abbreviated_field_access_expressions">Abbreviated Field Access Expressions</a></li>
</ul>
</li>
<li><a href="#From_clauses">FROM clauses</a>
<ul>

<li><a href="#Joins">Joins</a></li>
</ul>
</li>
<li><a href="#Let_clauses">LET Clauses</a></li>
<li><a href="#WHERE_Clause">WHERE Clause</a></li>
<li><a href="#Grouping">Grouping</a>
<ul>

<li><a href="#GROUP_BY_Clause">GROUP BY Clause</a></li>
<li><a href="#HAVING_Clause">HAVING Clause</a></li>
<li><a href="#Aggregation_PseudoFunctions">Aggregation Pseudo-functions</a></li>
<li><a href="#GROUP_AS_Clause">GROUP AS Clause</a></li>
</ul>
</li>
<li><a href="#Union_all">Selection and UNION ALL</a></li>
<li><a href="#With_clauses">WITH Clauses</a></li>
<li><a href="#Order_By_clauses">ORDER BY, LIMIT, and OFFSET Clauses</a></li>
<li><a href="#Subqueries">Subqueries</a></li>
</ul>
</li>
<li><a href="#Over_clauses">4. Window Functions</a>
<ul>

<li><a href="#Window_function_call">Window Function Call</a>
<ul>

<li><a href="#Window_function_arguments">Window Function Arguments</a></li>
<li><a href="#Window_function_options">Window Function Options</a></li>
<li><a href="#Window_frame_variable">Window Frame Variable</a></li>
<li><a href="#Window_definition">Window Definition</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Errors">5. Errors</a>
<ul>

<li><a href="#Syntax_errors">Syntax Errors</a></li>
<li><a href="#Identifier_resolution_errors">Identifier Resolution Errors</a></li>
<li><a href="#Type_errors">Type Errors</a></li>
<li><a href="#Resource_errors">Resource Errors</a></li>
</ul>
</li>
<li><a href="#Vs_SQL-92">6.Differences from SQL-92</a></li>
<li><a href="#DDL_and_DML_statements">7. DDL and DML Statements</a>
<ul>

<li><a href="#Lifecycle_management_statements">Lifecycle Management Statements</a>
<ul>

<li><a href="#Use">Use Statement</a></li>
<li><a href="#Sets">Set Statement</a></li>
<li><a href="#Functions">Function Declaration</a></li>
<li><a href="#Create">Create Statement</a>
<ul>

<li><a href="#Dataverses">Create Dataverse</a></li>
<li><a href="#Types">Create Type</a></li>
<li><a href="#Datasets">Create Dataset</a></li>
<li><a href="#Indices">Create Index</a></li>
<li><a href="#Synonyms">Create Synonym</a></li>
<li><a href="#Create_function">Create Function</a></li>
<li><a href="#Create_view">Create View</a></li>
</ul>
</li>
<li><a href="#Removal">Drop Statement</a></li>
<li><a href="#Load_statement">Load Statement</a></li>
</ul>
</li>
<li><a href="#Modification_statements">Modification Statements</a>
<ul>

<li><a href="#Inserts">Insert Statement</a></li>
<li><a href="#Upserts">Upsert Statement</a></li>
<li><a href="#Deletes">Delete Statement</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#Reserved_keywords">Appendix 1. Reserved Keywords</a></li>
<li><a href="#Performance_tuning">Appendix 2. Performance Tuning</a>
<ul>

<li><a href="#Parallelism_parameter">Parallelism Parameter</a></li>
<li><a href="#Memory_parameters">Memory Parameters</a></li>
<li><a href="#Query_hints">Query Hints</a></li>
</ul>
</li>
<li><a href="#Variable_bindings_and_name_resolution">Appendix 3. Variable Bindings and Name Resolution</a></li>
<li><a href="#Manual_data">Appendix 4. Example Data</a>
<ul>

<li><a href="#definition_statements">Data Definitions</a></li>
<li><a href="#customers_data">Customers Dataset</a></li>
<li><a href="#orders_data">Orders Dataset</a></li>
</ul>
</li>
</ul><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Introduction" id="Introduction">1. Introduction</a></h1>
<p>This document is intended as a reference guide to the full syntax and semantics of AsterixDB&#x2019;s query language, a SQL-based language for working with semistructured data. The language is a derivative of SQL++, a declarative query language for JSON data which is largely backwards compatible with SQL. SQL++ originated from research in the FORWARD project at UC San Diego, and it has much in common with SQL; some differences exist due to the different data models that the two languages were designed to serve. SQL was designed for interacting with the flat, schema-ified world of relational databases, while SQL++ generalizes SQL to also handle nested data formats (like JSON) and the schema-optional (or even schema-less) data models of modern NoSQL and BigData systems.</p>
<p>In the context of Apache AsterixDB, SQL++ is intended for working with the Asterix Data Model (<a href="../datamodel.html">ADM</a>), a data model based on a superset of JSON with an enriched and flexible type system. New AsterixDB users are encouraged to read and work through the (much friendlier) guide &#x201c;<a href="primer-sqlpp.html">AsterixDB 101: An ADM and SQL++ Primer</a>&#x201d; before attempting to make use of this document. In addition, readers are advised to read through the <a href="../datamodel.html">Asterix Data Model (ADM) reference guide</a> first as well, as an understanding of the data model is a prerequisite to understanding SQL++.</p>
<p>In what follows, we detail the features of the SQL++ language in a grammar-guided manner. We list and briefly explain each of the productions in the query grammar, offering examples (and results) for clarity. In this manual, we will explain how to use the various features of SQL++ using two datasets named <tt>customers</tt> and <tt>orders</tt>. Each dataset is a collection of objects. The contents of the example datasets can be found at the end of this manual in <a href="#Manual_data">Appendix 4</a>.</p>
<p>For additional reading on SQL++ and more examples, refer to <a class="externalLink" href="https://asterixdb.apache.org/files/SQL_Book.pdf">SQL++ for SQL Users: A Tutorial</a>.</p><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Expressions" id="Expressions">2. Expressions</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>An expression is a language fragment that can be evaluated to return a value. For example, the expression 2 + 3 returns the value 5. Expressions are the building blocks from which queries are constructed. SQL++ supports nearly all of the kinds of expressions in SQL, and adds some new kinds as well.</p>
<p>SQL++ is an orthogonal language, which means that expressions can serve as operands of higher level expressions. By nesting expressions inside other expressions, complex queries can be built up. Any expression can be enclosed in parentheses to establish operator precedence.</p>
<p>In this section, we&#x2019;ll discuss the various kinds of SQL++ expressions.</p>
<div class="section">
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Expr"></a>Expr</h5>
<p><img src="../images/diagrams/Expr.png" alt="" /></p></div></div></div></div>
<div class="section">
<h2><a name="Operator_Expressions"></a><a name="Operator_expressions" id="Operator_expressions">Operator Expressions</a></h2>
<p>Operators perform a specific operation on the input values or expressions. The syntax of an operator expression is as follows:</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="OperatorExpr"></a>OperatorExpr</h5>
<p><img src="../images/diagrams/OperatorExpr.png" alt="" /></p>
<p>The language provides a full set of operators that you can use within its statements. Here are the categories of operators:</p>
<ul>

<li><a href="#Arithmetic_operators">Arithmetic Operators</a>, to perform basic mathematical operations;</li>
<li><a href="#Collection_operators">Collection Operators</a>, to evaluate expressions on collections or objects;</li>
<li><a href="#Comparison_operators">Comparison Operators</a>, to compare two expressions;</li>
<li><a href="#Logical_operators">Logical Operators</a>, to combine operators using Boolean logic.</li>
</ul>
<p>The following table summarizes the precedence order (from higher to lower) of the major unary and binary operators:</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator                                                                    </th>
<th> Operation </th></tr>
</thead><tbody>

<tr class="b">
<td> EXISTS, NOT EXISTS                                                          </td>
<td>  Collection emptiness testing </td></tr>
<tr class="a">
<td> ^                                                                           </td>
<td>  Exponentiation  </td></tr>
<tr class="b">
<td> *, /, DIV, MOD (%)                                                          </td>
<td>  Multiplication, division, modulo </td></tr>
<tr class="a">
<td> +, -                                                                        </td>
<td>  Addition, subtraction  </td></tr>
<tr class="b">
<td> ||                                                                </td>
<td>  String concatenation </td></tr>
<tr class="a">
<td> IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING, <br />IS UNKNOWN, IS NOT UNKNOWN, IS VALUED, IS NOT VALUED </td>
<td> Unknown value comparison </td></tr>
<tr class="b">
<td> BETWEEN, NOT BETWEEN                                                        </td>
<td> Range comparison (inclusive on both sides) </td></tr>
<tr class="a">
<td> =, !=, &lt;&gt;, &lt;, &gt;, &lt;=, &gt;=, LIKE, NOT LIKE, IN, NOT IN, IS DISTINCT FROM, IS NOT DISTINCT FROM </td>
<td> Comparison  </td></tr>
<tr class="b">
<td> NOT                                                                         </td>
<td> Logical negation </td></tr>
<tr class="a">
<td> AND                                                                         </td>
<td> Conjunction </td></tr>
<tr class="b">
<td> OR                                                                          </td>
<td> Disjunction </td></tr>
</tbody>
</table>
<p>In general, if any operand evaluates to a <tt>MISSING</tt> value, the enclosing operator will return <tt>MISSING</tt>; if none of the operands evaluates to a <tt>MISSING</tt> value but there is an operand which evaluates to a <tt>NULL</tt> value, the enclosing operator will return <tt>NULL</tt>. However, there are a few exceptions listed in <a href="#Comparison_operators">comparison operators</a> and <a href="#Logical_operators">logical operators</a>.</p></div></div></div>
<div class="section">
<h3><a name="Arithmetic_Operators"></a><a name="Arithmetic_operators" id="Arithmetic_operators">Arithmetic Operators</a></h3>
<p>Arithmetic operators are used to exponentiate, add, subtract, multiply, and divide numeric values, or concatenate string values.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator     </th>
<th>  Purpose                                                                </th>
<th> Example    </th></tr>
</thead><tbody>

<tr class="b">
<td> +, -         </td>
<td>  As unary operators, they denote a <br />positive or negative expression </td>
<td> SELECT VALUE -1; </td></tr>
<tr class="a">
<td> +, -         </td>
<td>  As binary operators, they add or subtract                              </td>
<td> SELECT VALUE 1 + 2; </td></tr>
<tr class="b">
<td> *            </td>
<td>  Multiply                                                               </td>
<td> SELECT VALUE 4 * 2; </td></tr>
<tr class="a">
<td> /            </td>
<td>  Divide (returns a value of type <tt>double</tt> if both operands are integers)</td>
<td> SELECT VALUE 5 / 2; </td></tr>
<tr class="b">
<td> DIV          </td>
<td>  Divide (returns an integer value if both operands are integers)        </td>
<td> SELECT VALUE 5 DIV 2; </td></tr>
<tr class="a">
<td> MOD (%)      </td>
<td>  Modulo                                                                 </td>
<td> SELECT VALUE 5 % 2; </td></tr>
<tr class="b">
<td> ^            </td>
<td>  Exponentiation                                                         </td>
<td> SELECT VALUE 2^3;       </td></tr>
<tr class="a">
<td> || </td>
<td>  String concatenation                                                   </td>
<td> SELECT VALUE &#x201c;ab&#x201d;||&#x201c;c&#x201d;||&#x201c;d&#x201d;;       </td></tr>
</tbody>
</table></div>
<div class="section">
<h3><a name="Collection_Operators"></a><a name="Collection_operators" id="Collection_operators">Collection Operators</a></h3>
<p>Collection operators are used for membership tests (IN, NOT IN) or empty collection tests (EXISTS, NOT EXISTS).</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator   </th>
<th>  Purpose                                     </th>
<th> Example    </th></tr>
</thead><tbody>

<tr class="b">
<td> IN         </td>
<td>  Membership test                             </td>
<td> FROM customers AS c <br />WHERE c.address.zipcode IN [&#x201c;02340&#x201d;, &#x201c;02115&#x201d;] <br /> SELECT *; </td></tr>
<tr class="a">
<td> NOT IN     </td>
<td>  Non-membership test                         </td>
<td> FROM customers AS c <br />WHERE c.address.zipcode NOT IN [&#x201c;02340&#x201d;, &#x201c;02115&#x201d;] <br /> SELECT *;</td></tr>
<tr class="b">
<td> EXISTS     </td>
<td>  Check whether a collection is not empty     </td>
<td> FROM orders AS o <br />WHERE EXISTS  o.items <br /> SELECT *;</td></tr>
<tr class="a">
<td> NOT EXISTS </td>
<td>  Check whether a collection is empty         </td>
<td> FROM orders AS o <br />WHERE NOT EXISTS  o.items <br /> SELECT *; </td></tr>
</tbody>
</table></div>
<div class="section">
<h3><a name="Comparison_Operators"></a><a name="Comparison_operators" id="Comparison_operators">Comparison Operators</a></h3>
<p>Comparison operators are used to compare values.</p>
<p>The comparison operators fall into one of two sub-categories: missing value comparisons and regular value comparisons. SQL++ (and JSON) has two ways of representing missing information in an object &#x2014; the presence of the field with a NULL for its value (as in SQL), and the absence of the field (which JSON permits). For example, the first of the following objects represents Jack, whose friend is Jill. In the other examples, Jake is friendless &#xe0; la SQL, with a friend field that is NULL, while Joe is friendless in a more natural (for JSON) way, i.e., by not having a friend field.</p>
<div class="section">
<div class="section">
<h5><a name="Examples"></a>Examples</h5>

<div>
<div>
<pre class="source">{&quot;name&quot;: &quot;Jack&quot;, &quot;friend&quot;: &quot;Jill&quot;}

{&quot;name&quot;: &quot;Jake&quot;, &quot;friend&quot;: NULL}

{&quot;name&quot;: &quot;Joe&quot;}
</pre></div></div>

<p>The following table enumerates all of the comparison operators available in SQL++.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator       </th>
<th>  Purpose                                       </th>
<th> Example    </th></tr>
</thead><tbody>

<tr class="b">
<td> IS NULL        </td>
<td>  Test if a value is NULL                       </td>
<td>FROM customers AS c <br />WHERE c.name IS NULL <br /> SELECT *; </td></tr>
<tr class="a">
<td> IS NOT NULL    </td>
<td>  Test if a value is not NULL                   </td>
<td> FROM customers AS c <br />WHERE c.name IS NOT NULL <br /> SELECT *; </td></tr>
<tr class="b">
<td> IS MISSING     </td>
<td>  Test if a value is MISSING                    </td>
<td> FROM customers AS c <br />WHERE c.name IS MISSING <br /> SELECT *;  </td></tr>
<tr class="a">
<td> IS NOT MISSING </td>
<td>  Test if a value is not MISSING                </td>
<td> FROM customers AS c <br />WHERE c.name IS NOT MISSING <br /> SELECT *; </td></tr>
<tr class="b">
<td> IS UNKNOWN     </td>
<td>  Test if a value is NULL or MISSING            </td>
<td> FROM customers AS c <br />WHERE c.name IS UNKNOWN <br /> SELECT *; </td></tr>
<tr class="a">
<td> IS NOT UNKNOWN </td>
<td>  Test if a value is neither NULL nor MISSING   </td>
<td> FROM customers AS c <br />WHERE c.name IS NOT UNKNOWN <br /> SELECT *; </td></tr>
<tr class="b">
<td> IS KNOWN (IS VALUED) </td>
<td>  Test if a value is neither NULL nor MISSING </td>
<td> FROM customers AS c <br />WHERE c.name IS KNOWN <br /> SELECT *;  </td></tr>
<tr class="a">
<td> IS NOT KNOWN (IS NOT VALUED) </td>
<td>  Test if a value is NULL or MISSING </td>
<td> FROM customers AS c <br />WHERE c.name IS NOT KNOWN <br /> SELECT *;  </td></tr>
<tr class="b">
<td> BETWEEN        </td>
<td>  Test if a value is between a start value and a end value. The comparison is inclusive of both the start and end values. </td>
<td>  FROM customers AS c WHERE c.rating BETWEEN 600 AND 700 SELECT *;</td></tr>
<tr class="a">
<td> =              </td>
<td>  Equality test                                 </td>
<td> FROM customers AS c <br /> WHERE c.rating = 640 <br /> SELECT *; </td></tr>
<tr class="b">
<td> !=             </td>
<td>  Inequality test                               </td>
<td> FROM customers AS c <br /> WHERE c.rating != 640 <br /> SELECT *;</td></tr>
<tr class="a">
<td> &lt;&gt;             </td>
<td>  Inequality test                               </td>
<td> FROM customers AS c <br /> WHERE c.rating &lt;&gt; 640 <br /> SELECT *;</td></tr>
<tr class="b">
<td> &lt;              </td>
<td>  Less than                                     </td>
<td> FROM customers AS c <br /> WHERE c.rating &lt; 640 <br /> SELECT *; </td></tr>
<tr class="a">
<td> &gt;              </td>
<td>  Greater than                                  </td>
<td> FROM customers AS c <br /> WHERE c.rating &gt; 640 <br /> SELECT *; </td></tr>
<tr class="b">
<td> &lt;=             </td>
<td>  Less than or equal to                         </td>
<td> FROM customers AS c <br /> WHERE c.rating &lt;= 640 <br /> SELECT *; </td></tr>
<tr class="a">
<td> &gt;=             </td>
<td>  Greater than or equal to                      </td>
<td> FROM customers AS c <br /> WHERE c.rating &gt;= 640 <br /> SELECT *; </td></tr>
<tr class="b">
<td> LIKE           </td>
<td>  Test if the left side matches a pattern defined on the right side; in the pattern,  &#x201c;%&#x201d; matches any string while &#x201c;_&#x201d; matches any character. </td>
<td> FROM customers AS c WHERE c.name LIKE &#x201c;%Dodge%&#x201d; SELECT *;</td></tr>
<tr class="a">
<td> NOT LIKE       </td>
<td>  Test if the left side does not match a pattern defined on the right side; in the pattern, &#x201c;%&#x201d; matches any string while &#x201c;_&#x201d; matches any character. </td>
<td> FROM customers AS c WHERE c.name NOT LIKE &#x201c;%Dodge%&#x201d; SELECT *;</td></tr>
<tr class="b">
<td> IS DISTINCT FROM </td>
<td> Inequality test that that treats NULL values as equal to each other and MISSING values as equal to each other </td>
<td> FROM orders AS o <br /> WHERE o.order_date IS DISTINCT FROM o.ship_date <br /> SELECT *; </td>
<td> </td></tr>
<tr class="a">
<td> IS NOT DISTINCT FROM </td>
<td> Equality test that treats NULL values as equal to each other and MISSING values as equal to each other </td>
<td> FROM orders AS o <br /> WHERE o.order_date IS NOT DISTINCT FROM o.ship_date <br /> SELECT *;  </td></tr>
</tbody>
</table>
<p>The following table summarizes how the missing value comparison operators work.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator </th>
<th> Non-NULL/Non-MISSING value </th>
<th> NULL value</th>
<th> MISSING value</th></tr>
</thead><tbody>

<tr class="b">
<td> IS NULL  </td>
<td> FALSE </td>
<td> TRUE </td>
<td> MISSING </td></tr>
<tr class="a">
<td> IS NOT NULL </td>
<td> TRUE </td>
<td> FALSE </td>
<td> MISSING </td></tr>
<tr class="b">
<td> IS MISSING  </td>
<td> FALSE </td>
<td> FALSE </td>
<td> TRUE </td></tr>
<tr class="a">
<td> IS NOT MISSING </td>
<td> TRUE </td>
<td> TRUE </td>
<td> FALSE </td></tr>
<tr class="b">
<td> IS UNKNOWN </td>
<td> FALSE </td>
<td> TRUE </td>
<td> TRUE </td></tr>
<tr class="a">
<td> IS NOT UNKNOWN </td>
<td> TRUE </td>
<td> FALSE </td>
<td> FALSE</td></tr>
<tr class="b">
<td> IS KNOWN (IS VALUED) </td>
<td> TRUE </td>
<td> FALSE </td>
<td> FALSE </td></tr>
<tr class="a">
<td> IS NOT KNOWN (IS NOT VALUED) </td>
<td> FALSE </td>
<td> TRUE </td>
<td> TRUE </td></tr>
</tbody>
</table></div></div></div>
<div class="section">
<h3><a name="Logical_Operators"></a><a name="Logical_operators" id="Logical_operators">Logical Operators</a></h3>
<p>Logical operators perform logical <tt>NOT</tt>, <tt>AND</tt>, and <tt>OR</tt> operations over Boolean values (<tt>TRUE</tt> and <tt>FALSE</tt>) plus <tt>NULL</tt> and <tt>MISSING</tt>.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Operator </th>
<th>  Purpose                                   </th>
<th> Example    </th></tr>
</thead><tbody>

<tr class="b">
<td> NOT      </td>
<td>  Returns true if the following condition is false, otherwise returns false  </td>
<td> SELECT VALUE NOT 1 = 1; <br /> Returns FALSE  </td></tr>
<tr class="a">
<td> AND      </td>
<td>  Returns true if both branches are true, otherwise returns false            </td>
<td> SELECT VALUE 1 = 2 AND 1 = 1; <br /> Returns FALSE</td></tr>
<tr class="b">
<td> OR       </td>
<td>  Returns true if one branch is true, otherwise returns false                </td>
<td> SELECT VALUE 1 = 2 OR 1 = 1; <br /> Returns TRUE </td></tr>
</tbody>
</table>
<p>The following table is the truth table for <tt>AND</tt> and <tt>OR</tt>.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> A  </th>
<th> B  </th>
<th> A AND B  </th>
<th> A OR B </th></tr>
</thead><tbody>

<tr class="b">
<td> TRUE </td>
<td> TRUE </td>
<td> TRUE </td>
<td> TRUE </td></tr>
<tr class="a">
<td> TRUE </td>
<td> FALSE </td>
<td> FALSE </td>
<td> TRUE </td></tr>
<tr class="b">
<td> TRUE </td>
<td> NULL </td>
<td> NULL </td>
<td> TRUE </td></tr>
<tr class="a">
<td> TRUE </td>
<td> MISSING </td>
<td> MISSING </td>
<td> TRUE </td></tr>
<tr class="b">
<td> FALSE </td>
<td> FALSE </td>
<td> FALSE </td>
<td> FALSE </td></tr>
<tr class="a">
<td> FALSE </td>
<td> NULL </td>
<td> FALSE </td>
<td> NULL </td></tr>
<tr class="b">
<td> FALSE </td>
<td> MISSING </td>
<td> FALSE </td>
<td> MISSING </td></tr>
<tr class="a">
<td> NULL </td>
<td> NULL </td>
<td> NULL </td>
<td> NULL </td></tr>
<tr class="b">
<td> NULL </td>
<td> MISSING </td>
<td> MISSING </td>
<td> NULL </td></tr>
<tr class="a">
<td> MISSING </td>
<td> MISSING </td>
<td> MISSING </td>
<td> MISSING </td></tr>
</tbody>
</table>
<p>The following table demonstrates the results of <tt>NOT</tt> on all possible inputs.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> A  </th>
<th> NOT A </th></tr>
</thead><tbody>

<tr class="b">
<td> TRUE </td>
<td> FALSE </td></tr>
<tr class="a">
<td> FALSE </td>
<td> TRUE </td></tr>
<tr class="b">
<td> NULL </td>
<td> NULL </td></tr>
<tr class="a">
<td> MISSING </td>
<td> MISSING </td></tr>
</tbody>
</table></div></div>
<div class="section">
<h2><a name="Quantified_Expressions"></a><a name="Quantified_expressions" id="Quantified_expressions">Quantified Expressions</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="QuantifiedExpr"></a>QuantifiedExpr</h5>
<p><img src="../images/diagrams/QuantifiedExpr.png" alt="" /></p>
<p>Synonym for <tt>SOME</tt>: <tt>ANY</tt></p>
<p>Quantified expressions are used for expressing existential or universal predicates involving the elements of a collection.</p>
<p>The following pair of examples illustrate the use of a quantified expression to test that every (or some) element in the set [1, 2, 3] of integers is less than three. The first example yields <tt>FALSE</tt> and second example yields <tt>TRUE</tt>.</p>
<p>It is useful to note that if the set were instead the empty set, the first expression would yield <tt>TRUE</tt> (&#x201c;every&#x201d; value in an empty set satisfies the condition) while the second expression would yield <tt>FALSE</tt> (since there isn&#x2019;t &#x201c;some&#x201d; value, as there are no values in the set, that satisfies the condition). To express a universal predicate that yields <tt>FALSE</tt> with the empty set, we would use the quantifier <tt>SOME AND EVERY</tt> in lieu of <tt>EVERY</tt>.</p>
<p>A quantified expression will return a <tt>NULL</tt> (or <tt>MISSING</tt>) if the first expression in it evaluates to <tt>NULL</tt> (or <tt>MISSING</tt>). Otherwise, a type error will be raised if the first expression in a quantified expression does not return a collection.</p></div>
<div class="section">
<h5><a name="Examples"></a>Examples</h5>

<div>
<div>
<pre class="source">EVERY x IN [ 1, 2, 3 ] SATISFIES x &lt; 3 -- &#x278a;
SOME x IN [ 1, 2, 3 ] SATISFIES x &lt; 3  -- &#x278b;
</pre></div></div>

<p>&#x2780; Returns <tt>FALSE</tt><br />
&#x2781; Returns <tt>TRUE</tt></p></div></div></div></div>
<div class="section">
<h2><a name="Path_Expressions"></a><a name="Path_expressions" id="Path_expressions">Path Expressions</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="PathExpr"></a>PathExpr</h5>
<p><img src="../images/diagrams/PathExpr.png" alt="" /></p>
<p>Components of complex types in the data model are accessed via path expressions. Path access can be applied to the result of a query expression that yields an instance of a complex type, for example, an object or an array instance.</p>
<p>For objects, path access is based on field names, and it accesses the field whose name was specified.</p>
<p>For arrays, path access is based on (zero-based) array-style indexing. Array indices can be used to retrieve either a single element from an array, or a whole subset of an array. Accessing a single element is achieved by providing a single index argument (zero-based element position), while obtaining a subset of an array is achieved by providing the <tt>start</tt> and <tt>end</tt> (zero-based) index positions; the returned subset is from position <tt>start</tt> to position <tt>end - 1</tt>; the <tt>end</tt> position argument is optional. If a position argument is negative then the element position is counted from the end of the array (<tt>-1</tt> addresses the last element, <tt>-2</tt> next to last, and so on).</p>
<p>Multisets have similar behavior to arrays, except for retrieving arbitrary items as the order of items is not fixed in multisets.</p>
<p>Attempts to access non-existent fields or out-of-bound array elements produce the special value <tt>MISSING</tt>. Type errors will be raised for inappropriate use of a path expression, such as applying a field accessor to a numeric value.</p>
<p>The following examples illustrate field access for an object, index-based element access or subset retrieval of an array, and also a composition thereof.</p></div>
<div class="section">
<h5><a name="Examples"></a>Examples</h5>

<div>
<div>
<pre class="source">({&quot;name&quot;: &quot;MyABCs&quot;, &quot;array&quot;: [ &quot;a&quot;, &quot;b&quot;, &quot;c&quot;]}).array    -- &#x278a;
([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])[2]                                     -- &#x278b;
([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])[-1]                                    -- &#x278c;
({&quot;name&quot;: &quot;MyABCs&quot;, &quot;array&quot;: [ &quot;a&quot;, &quot;b&quot;, &quot;c&quot;]}).array[2] -- &#x278d;
([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])[0:2]                                   -- &#x278e;
([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])[0:]                                    -- &#x278f;
([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])[-2:-1]                                 -- &#x2790;
</pre></div></div>

<p>&#x2780; Returns <tt>[[&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]]</tt><br />
&#x2781; Returns <tt>[&quot;c&quot;]</tt><br />
&#x2782; Returns <tt>[&quot;c&quot;]</tt><br />
&#x2783; Returns <tt>[&quot;c&quot;]</tt><br />
&#x2784; Returns <tt>[[&quot;a&quot;, &quot;b&quot;]]</tt><br />
&#x2785; Returns <tt>[[&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]]</tt><br />
&#x2786; Returns <tt>[[&quot;b&quot;]]</tt></p></div></div></div></div>
<div class="section">
<h2><a name="Primary_Expressions"></a><a name="Primary_expressions" id="Primary_expressions">Primary Expressions</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="PrimaryExpr"></a>PrimaryExpr</h5>
<p><img src="../images/diagrams/PrimaryExpr.png" alt="" /></p>
<p>The most basic building block for any expression in SQL++ is Primary Expression. This can be a simple literal (constant) value, a reference to a query variable that is in scope, a parenthesized expression, a function call, or a newly constructed instance of the data model (such as a newly constructed object, array, or multiset of data model instances).</p></div></div></div>
<div class="section">
<h3><a name="Literals" id="Literals">Literals</a></h3>
<div class="section">
<div class="section">
<h5><a name="Literal"></a>Literal</h5>
<p><img src="../images/diagrams/Literal.png" alt="" /></p>
<p>The simplest kind of expression is a literal that directly represents a value in JSON format. Here are some examples:</p>

<div>
<div>
<pre class="source">-42
&quot;Hello&quot;
true
false
null
</pre></div></div>

<p>Numeric literals may include a sign and an optional decimal point. They may also be written in exponential notation, like this:</p>

<div>
<div>
<pre class="source">5e2
-4.73E-2
</pre></div></div>

<p>String literals may be enclosed in either single quotes or double quotes. Inside a string literal, the delimiter character for that string must be &#x201c;escaped&#x201d; by a backward slash, as in these examples:</p>

<div>
<div>
<pre class="source">&quot;I read \&quot;War and Peace\&quot; today.&quot;
'I don\'t believe everything I read.'
</pre></div></div>

<p>The table below shows how to escape characters in SQL++.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th>Character Name </th>
<th>Escape Method</th></tr>
</thead><tbody>

<tr class="b">
<td>Single Quote</td>
<td> <tt>\'</tt></td></tr>
<tr class="a">
<td>Double Quote</td>
<td><tt>\&quot;</tt></td></tr>
<tr class="b">
<td>Backslash</td>
<td><tt>\\</tt></td></tr>
<tr class="a">
<td>Slash</td>
<td><tt>\/</tt></td></tr>
<tr class="b">
<td>Backspace</td>
<td><tt>\b</tt></td></tr>
<tr class="a">
<td>Formfeed</td>
<td><tt>\f</tt></td></tr>
<tr class="b">
<td>Newline</td>
<td><tt>\n</tt></td></tr>
<tr class="a">
<td>CarriageReturn</td>
<td><tt>\r</tt></td></tr>
<tr class="b">
<td>EscapeTab</td>
<td><tt>\t</tt></td></tr>
</tbody>
</table></div></div></div>
<div class="section">
<h3><a name="Identifiers_and_Variable_References"></a><a name="Variable_references" id="Variable_references">Identifiers and Variable References</a></h3>
<p>Like SQL, SQL++ makes use of a language construct called an <i>identifier</i>. An identifier starts with an alphabetic character or the underscore character _ , and contains only case-sensitive alphabetic characters, numeric digits, or the special characters _ and $. It is also possible for an identifier to include other special characters, or to be the same as a reserved word, by enclosing the identifier in back-ticks (it&#x2019;s then called a <i>delimited identifier</i>). Identifiers are used in variable names and in certain other places in SQL++ syntax, such as in path expressions, which we&#x2019;ll discuss soon. Here are some examples of identifiers:</p>

<div>
<div>
<pre class="source">X
customer_name
`SELECT`
`spaces in here`
`@&amp;#`
</pre></div></div>

<p>A very simple kind of SQL++ expression is a variable, which is simply an identifier. As in SQL, a variable can be bound to a value, which may be an input dataset, some intermediate result during processing of a query, or the final result of a query. We&#x2019;ll learn more about variables when we discuss queries.</p>
<p>Note that the SQL++ rules for delimiting strings and identifiers are different from the SQL rules. In SQL, strings are always enclosed in single quotes, and double quotes are used for delimited identifiers.</p></div>
<div class="section">
<h3><a name="Parameter_References"></a><a name="Parameter_references" id="Parameter_references">Parameter References</a></h3>
<p>A parameter reference is an external variable. Its value is provided using the <a href="../api.html#queryservice">statement execution API</a>.</p>
<p>Parameter references come in two forms, <i>Named Parameter References</i> and <i>Positional Parameter References</i>.</p>
<p>Named parameter references consist of the &#x201c;$&#x201d; symbol followed by an identifier or delimited identifier.</p>
<p>Positional parameter references can be either a &#x201c;$&#x201d; symbol followed by one or more digits or a &#x201c;?&#x201d; symbol. If numbered, positional parameters start at 1. &#x201c;?&#x201d; parameters are interpreted as $1 to $N based on the order in which they appear in the statement.</p>
<p>Parameter references may appear as shown in the below examples:</p>
<div class="section">
<div class="section">
<h5><a name="Examples"></a>Examples</h5>

<div>
<div>
<pre class="source">$id
$1
?
</pre></div></div>

<p>An error will be raised in the parameter is not bound at query execution time.</p></div></div></div>
<div class="section">
<h3><a name="Parenthesized_Expressions"></a><a name="Parenthesized_expressions" id="Parenthesized_expressions">Parenthesized Expressions</a></h3>
<div class="section">
<div class="section">
<h5><a name="ParenthesizedExpr"></a>ParenthesizedExpr</h5>
<p><img src="../images/diagrams/ParenthesizedExpr.png" alt="" /></p></div>
<div class="section">
<h5><a name="Subquery"></a>Subquery</h5>
<p><img src="../images/diagrams/Subquery.png" alt="" /></p>
<p>An expression can be parenthesized to control the precedence order or otherwise clarify a query. A <a href="#Subqueries">subquery</a> (nested <a href="#Union_all">selection</a>) may also be enclosed in parentheses. For more on these topics please see their respective sections.</p>
<p>The following expression evaluates to the value 2.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">( 1 + 1 )
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Function_Calls"></a><a name="Function_call_expressions" id="Function_call_expressions">Function Calls</a></h3>
<div class="section">
<div class="section">
<h5><a name="FunctionCall"></a>FunctionCall</h5>
<p><img src="../images/diagrams/FunctionCall.png" alt="" /></p></div>
<div class="section">
<h5><a name="OrdinaryFunctionCall"></a>OrdinaryFunctionCall</h5>
<p><img src="../images/diagrams/OrdinaryFunctionCall.png" alt="" /></p></div>
<div class="section">
<h5><a name="AggregateFunctionCall"></a>AggregateFunctionCall</h5>
<p><img src="../images/diagrams/AggregateFunctionCall.png" alt="" /></p></div>
<div class="section">
<h5><a name="DataverseName"></a>DataverseName</h5>
<p><img src="../images/diagrams/DataverseName.png" alt="" /></p>
<p>Functions are included in SQL++, like most languages, as a way to package useful functionality or to componentize complicated or reusable computations. A function call is a legal query expression that represents the value resulting from the evaluation of its body expression with the given parameter bindings; the parameter value bindings can themselves be any expressions in SQL++.</p>
<p>Note that Window functions, and aggregate functions used as window functions, have a more complex syntax. Window function calls are described in the section on <a href="#Over_clauses">Window Queries</a>.</p>
<p>Also note that FILTER expressions can only be specified when calling <a href="#Aggregation_PseudoFunctions">Aggregation Pseudo-Functions</a>.</p>
<p>The following example is a function call expression whose value is 8.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">length('a string')
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Case_Expressions"></a><a name="Case_expressions" id="Case_expressions">Case Expressions</a></h3>
<div class="section">
<div class="section">
<h5><a name="CaseExpr"></a>CaseExpr</h5>
<p><img src="../images/diagrams/CaseExpr.png" alt="" /></p></div>
<div class="section">
<h5><a name="SimpleCaseExpr"></a>SimpleCaseExpr</h5>
<p><img src="../images/diagrams/SimpleCaseExpr.png" alt="" /></p></div>
<div class="section">
<h5><a name="SearchedCaseExpr"></a>SearchedCaseExpr</h5>
<p><img src="../images/diagrams/SearchedCaseExpr.png" alt="" /></p>
<p>In a simple <tt>CASE</tt> expression, the query evaluator searches for the first <tt>WHEN</tt> &#x2026; <tt>THEN</tt> pair in which the <tt>WHEN</tt> expression is equal to the expression following <tt>CASE</tt> and returns the expression following <tt>THEN</tt>. If none of the <tt>WHEN</tt> &#x2026; <tt>THEN</tt> pairs meet this condition, and an <tt>ELSE</tt> branch exists, it returns the <tt>ELSE</tt> expression. Otherwise, <tt>NULL</tt> is returned.</p>
<p>In a searched CASE expression, the query evaluator searches from left to right until it finds a <tt>WHEN</tt> expression that is evaluated to <tt>TRUE</tt>, and then returns its corresponding <tt>THEN</tt> expression. If no condition is found to be <tt>TRUE</tt>, and an <tt>ELSE</tt> branch exists, it returns the <tt>ELSE</tt> expression. Otherwise, it returns <tt>NULL</tt>.</p>
<p>The following example illustrates the form of a case expression.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CASE (2 &lt; 3) WHEN true THEN &quot;yes&quot; ELSE &quot;no&quot; END
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Constructors" id="Constructors">Constructors</a></h3>
<div class="section">
<div class="section">
<h5><a name="Constructor"></a>Constructor</h5>
<p><img src="../images/diagrams/Constructor.png" alt="" /></p></div>
<div class="section">
<h5><a name="ObjectConstructor"></a>ObjectConstructor</h5>
<p><img src="../images/diagrams/ObjectConstructor.png" alt="" /></p></div>
<div class="section">
<h5><a name="ArrayConstructor"></a>ArrayConstructor</h5>
<p><img src="../images/diagrams/ArrayConstructor.png" alt="" /></p></div>
<div class="section">
<h5><a name="ParenthesizedArrayConstructor"></a>ParenthesizedArrayConstructor</h5>
<p><img src="../images/diagrams/ParenthesizedArrayConstructor.png" alt="" /></p></div>
<div class="section">
<h5><a name="MultisetConstructor"></a>MultisetConstructor</h5>
<p><img src="../images/diagrams/MultisetConstructor.png" alt="" /></p>
<p>Structured JSON values can be represented by constructors, as in these examples:</p>

<div>
<div>
<pre class="source">{ &quot;name&quot;: &quot;Bill&quot;, &quot;age&quot;: 42 } -- &#x278a;
[ 1, 2, &quot;Hello&quot;, null ]       -- &#x278b;
</pre></div></div>

<p>&#x2780; An object<br />
&#x2781; An array</p>
<p>In a constructed object, the names of the fields must be strings (either literal strings or computed strings), and an object may not contain any duplicate names. Of course, structured literals can be nested, as in this example:</p>

<div>
<div>
<pre class="source">[ {&quot;name&quot;: &quot;Bill&quot;,
   &quot;address&quot;:
      {&quot;street&quot;: &quot;25 Main St.&quot;,
       &quot;city&quot;: &quot;Cincinnati, OH&quot;
      }
  },
  {&quot;name&quot;: &quot;Mary&quot;,
   &quot;address&quot;:
      {&quot;street&quot;: &quot;107 Market St.&quot;,
       &quot;city&quot;: &quot;St. Louis, MO&quot;
      }
   }
]
</pre></div></div>

<p>The array items in an array constructor, and the field-names and field-values in an object constructor, may be represented by expressions. For example, suppose that the variables firstname, lastname, salary, and bonus are bound to appropriate values. Then structured values might be constructed by the following expressions:</p>
<p>An object:</p>

<div>
<div>
<pre class="source">{
  &quot;name&quot;: firstname || &quot; &quot; || lastname,
  &quot;income&quot;: salary + bonus
}
</pre></div></div>

<p>An array:</p>

<div>
<div>
<pre class="source">[&quot;1984&quot;, lastname, salary + bonus, null]
</pre></div></div>

<p>If only one expression is specified instead of the field-name/field-value pair in an object constructor then this expression is supposed to provide the field value. The field name is then automatically generated based on the kind of the value expression as in Q2.1:</p>
<ul>

<li>If it is a variable reference expression then the generated field name is the name of that variable.</li>
<li>If it is a field access expression then the generated field name is the last identifier in that expression.</li>
<li>For all other cases, a compilation error will be raised.</li>
</ul></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q2.1)</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.custid = &quot;C47&quot;
SELECT VALUE {c.name, c.rating}
</pre></div></div>

<p>This query outputs:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;name&quot;: &quot;S. Logan&quot;,
        &quot;rating&quot;: 625
    }
]
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Queries" id="Queries">3. Queries</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>A <i>query</i> can be an expression, or it can be constructed from blocks of code called <i>query blocks</i>. A query block may contain several clauses, including <tt>SELECT</tt>, <tt>FROM</tt>, <tt>LET</tt>, <tt>WHERE</tt>, <tt>GROUP BY</tt>, and <tt>HAVING</tt>.</p></div>
<div class="section">
<h5><a name="Query"></a>Query</h5>
<p><img src="../images/diagrams/Query.png" alt="" /></p></div>
<div class="section">
<h5><a name="Selection"></a>Selection</h5>
<p><img src="../images/diagrams/Selection.png" alt="" /></p></div>
<div class="section">
<h5><a name="QueryBlock"></a>QueryBlock</h5>
<p><img src="../images/diagrams/QueryBlock.png" alt="" /></p></div>
<div class="section">
<h5><a name="StreamGenerator"></a>StreamGenerator</h5>
<p><img src="../images/diagrams/StreamGenerator.png" alt="" /></p>
<p>Note that, unlike SQL, SQL++ allows the <tt>SELECT</tt> clause to appear either at the beginning or at the end of a query block. For some queries, placing the <tt>SELECT</tt> clause at the end may make a query block easier to understand, because the <tt>SELECT</tt> clause refers to variables defined in the other clauses.</p></div></div></div></div>
<div class="section">
<h2><a name="SELECT_Clause"></a><a name="Select_clauses" id="Select_clauses">SELECT Clause</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="SelectClause"></a>SelectClause</h5>
<p><img src="../images/diagrams/SelectClause.png" alt="" /></p></div>
<div class="section">
<h5><a name="Projection"></a>Projection</h5>
<p><img src="../images/diagrams/Projection.png" alt="" /></p>
<p>Synonyms for <tt>VALUE</tt>: <tt>ELEMENT</tt>, <tt>RAW</tt></p>
<p>In a query block, the <tt>FROM</tt>, <tt>WHERE</tt>, <tt>GROUP BY</tt>, and <tt>HAVING</tt> clauses (if present) are collectively called the Stream Generator. All these clauses, taken together, generate a stream of tuples of bound variables. The <tt>SELECT</tt> clause then uses these bound variables to generate the output of the query block.</p>
<p>For example, the clause <tt>FROM customers AS c</tt> scans over the <tt>customers</tt> collection, binding the variable <tt>c</tt> to each <tt>customer</tt> object in turn, producing a stream of bindings.</p>
<p>Here&#x2019;s a slightly more complex example of a stream generator:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">FROM customers AS c, orders AS o
WHERE c.custid = o.custid
</pre></div></div>

<p>In this example, the <tt>FROM</tt> clause scans over the customers and orders collections, producing a stream of variable pairs (<tt>c</tt>, <tt>o</tt>) in which <tt>c</tt> is bound to a <tt>customer</tt> object and <tt>o</tt> is bound to an <tt>order</tt> object. The <tt>WHERE</tt> clause then retains only those pairs in which the custid values of the two objects match.</p>
<p>The output of the query block is a collection containing one output item for each tuple produced by the stream generator. If the stream generator produces no tuples, the output of the query block is an empty collection. Depending on the <tt>SELECT</tt> clause, each output item may be an object or some other kind of value.</p>
<p>In addition to using the variables bound by previous clauses, the <tt>SELECT</tt> clause may create and bind some additional variables. For example, the clause <tt>SELECT salary + bonus AS pay</tt> creates the variable <tt>pay</tt> and binds it to the value of <tt>salary + bonus</tt>. This variable may then be used in a later <tt>ORDER BY</tt> clause.</p>
<p>In SQL++, the <tt>SELECT</tt> clause may appear either at the beginning or at the end of a query block. Since the <tt>SELECT</tt> clause depends on variables that are bound in the other clauses, the examples in this section place <tt>SELECT</tt> at the end of the query blocks.</p></div></div></div>
<div class="section">
<h3><a name="SELECT_VALUE"></a><a name="Select_element" id="Select_element">SELECT VALUE</a></h3>
<p>The <tt>SELECT VALUE</tt> clause returns an array or multiset that contains the results of evaluating the <tt>VALUE</tt> expression, with one evaluation being performed per &#x201c;binding tuple&#x201d; (i.e., per <tt>FROM</tt> clause item) satisfying the statement&#x2019;s selection criteria. If there is no <tt>FROM</tt> clause, the expression after <tt>VALUE</tt> is evaluated once with no binding tuples (except those inherited from an outer environment).</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.1)</p>

<div>
<div>
<pre class="source">SELECT VALUE 1;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
   1
]
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.2) The following query returns the names of all customers whose rating is above 650.</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.rating &gt; 650
SELECT VALUE name;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    &quot;T. Cody&quot;,
    &quot;M. Sinclair&quot;,
    &quot;T. Henry&quot;
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="SQL-style_SELECT"></a><a name="SQL_select" id="SQL_select">SQL-style SELECT</a></h3>
<p>Traditional SQL-style <tt>SELECT</tt> syntax is also supported in SQL++, however the result of a query is not guaranteed to preserve the order of expressions in the <tt>SELECT</tt> clause.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.3) The following query returns the names and customers ids of any customers whose rating is 750.</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.rating = 750
SELECT c.name AS customer_name, c.custid AS customer_id;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;customer_id&quot;: &quot;C13&quot;,
        &quot;customer_name&quot;: &quot;T. Cody&quot;
    },
    {
        &quot;customer_id&quot;: &quot;C37&quot;,
        &quot;customer_name&quot;: &quot;T. Henry&quot;
    }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="SELECT_.2A"></a><a name="Select_star" id="Select_star">SELECT *</a></h3>
<p>As in SQL, the phrase <tt>SELECT *</tt> suggests, &#x201c;select everything.&#x201d;</p>
<p>For each binding tuple in the stream, <tt>SELECT *</tt> produces an output object. For each variable in the binding tuple, the output object contains a field: the name of the field is the name of the variable, and the value of the field is the value of the variable. Essentially, <tt>SELECT *</tt> means, &#x201c;return all the bound variables, with their names and values.&#x201d;</p>
<p>The effect of <tt>SELECT *</tt> can be illustrated by an example based on two small collections named <tt>ages</tt> and <tt>eyes</tt>. The contents of the two collections are as follows:</p>
<p><tt>ages</tt>:</p>

<div>
<div>
<pre class="source">[
    { &quot;name&quot;: &quot;Bill&quot;, &quot;age&quot;: 21 },
    { &quot;name&quot;: &quot;Sue&quot;, &quot;age&quot;: 32 }
]
</pre></div></div>

<p><tt>eyes</tt>:</p>

<div>
<div>
<pre class="source">[
    { &quot;name&quot;: &quot;Bill&quot;, &quot;eyecolor&quot;: &quot;brown&quot; },
    { &quot;name&quot;: &quot;Sue&quot;, &quot;eyecolor&quot;: &quot;blue&quot; }
]
</pre></div></div>

<p>The following example applies <tt>SELECT *</tt> to a single collection.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.4a) Return all the information in the <tt>ages</tt> collection.</p>

<div>
<div>
<pre class="source">FROM ages AS a
SELECT * ;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    { &quot;a&quot;: { &quot;name&quot;: &quot;Bill&quot;, &quot;age&quot;: 21 },
    },
    { &quot;a&quot;: { &quot;name&quot;: &quot;Sue&quot;, &quot;age&quot;: 32}
    }
]
</pre></div></div>

<p>Note that the variable-name <tt>a</tt> appears in the query result. If the <tt>FROM</tt> clause had been simply <tt>FROM ages</tt> (omitting <tt>AS a</tt>), the variable-name in the query result would have been <tt>ages</tt>.</p>
<p>The next example applies <tt>SELECT *</tt> to a join of two collections.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.4b) Return all the information in a join of <tt>ages</tt> and <tt>eyes</tt> on matching name fields.</p>

<div>
<div>
<pre class="source">FROM ages AS a, eyes AS e
WHERE a.name = e.name
SELECT * ;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    { &quot;a&quot;: { &quot;name&quot;: &quot;Bill&quot;, &quot;age&quot;: 21 },
      &quot;e&quot;: { &quot;name&quot;: &quot;Bill&quot;, &quot;eyecolor&quot;: &quot;Brown&quot; }
    },
    { &quot;a&quot;: { &quot;name&quot;: &quot;Sue&quot;, &quot;age&quot;: 32 },
      &quot;e&quot;: { &quot;name&quot;: &quot;Sue&quot;, &quot;eyecolor&quot;: &quot;Blue&quot; }
    }
]
</pre></div></div>

<p>Note that the result of <tt>SELECT *</tt> in SQL++ is more complex than the result of <tt>SELECT *</tt> in SQL.</p></div></div></div>
<div class="section">
<h3><a name="SELECT_variable..2A"></a><a name="Select_variable_star" id="Select_variable_star">SELECT <i>variable</i>.*</a></h3>
<p>SQL++ has an alternative version of <tt>SELECT *</tt> in which the star is preceded by a variable.</p>
<p>Whereas the version without a named variable means, &#x201c;return all the bound variables, with their names and values,&#x201d; <tt>SELECT</tt> <i>variable</i> <tt>.*</tt> means &#x201c;return only the named variable, and return only its value, not its name.&#x201d;</p>
<p>The following example can be compared with (Q3.4a) to see the difference between the two versions of <tt>SELECT *</tt>:</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.4c) Return all information in the <tt>ages</tt> collection.</p>

<div>
<div>
<pre class="source">FROM ages AS a
SELECT a.*
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    { &quot;name&quot;: &quot;Bill&quot;, &quot;age&quot;: 21 },
    { &quot;name&quot;: &quot;Sue&quot;, &quot;age&quot;: 32 }
]
</pre></div></div>

<p>Note that, for queries over a single collection, <tt>SELECT</tt> <i>variable</i> <tt>.*</tt> returns a simpler result and therefore may be preferable to <tt>SELECT *</tt>.</p>
<p>In fact, <tt>SELECT</tt> <i>variable</i> <tt>.*</tt>, like <tt>SELECT *</tt> in SQL, is equivalent to a <tt>SELECT</tt> clause that enumerates all the fields of the collection, as in (Q3.4d):</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.4d) Return all the information in the <tt>ages</tt> collection.</p>

<div>
<div>
<pre class="source">FROM ages AS a
SELECT a.name, a.age
</pre></div></div>

<p>(same result as (Q3.4c))</p>
<p><tt>SELECT</tt> <i>variable</i> <tt>.*</tt> has an additional application. It can be used to return all the fields of a nested object. To illustrate this use, we will use the <tt>customers</tt> dataset in the example database &#x2014; see <a href="#Manual_data">Appendix 4</a>.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.4e) In the <tt>customers</tt> dataset, return all the fields of the <tt>address</tt> objects that have zipcode &#x201c;02340&#x201d;.</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.address.zipcode = &quot;02340&quot;
SELECT address.*  ;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;street&quot;: &quot;690 River St.&quot;,
        &quot;city&quot;: &quot;Hanover, MA&quot;,
        &quot;zipcode&quot;: &quot;02340&quot;
    }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="SELECT_DISTINCT"></a><a name="Select_distinct" id="Select_distinct">SELECT DISTINCT</a></h3>
<p>The <tt>DISTINCT</tt> keyword is used to eliminate duplicate items from the results of a query block.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.5a) Returns all of the different cities in the <tt>customers</tt> dataset.</p>

<div>
<div>
<pre class="source">FROM customers AS c
SELECT DISTINCT c.address.city;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;city&quot;: &quot;Boston, MA&quot;
    },
    {
        &quot;city&quot;: &quot;Hanover, MA&quot;
    },
    {
        &quot;city&quot;: &quot;St. Louis, MO&quot;
    },
    {
        &quot;city&quot;: &quot;Rome, Italy&quot;
    }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="SELECT_EXCLUDE"></a><a name="Select_exclude" id="Select_exclude">SELECT EXCLUDE</a></h3>
<p>The <tt>EXCLUDE</tt> keyword is used to remove one or more fields that would otherwise be returned from the <tt>SELECT</tt> clause. Conceptually, the scope of the <tt>EXCLUDE</tt> clause is the output of the <tt>SELECT</tt> clause itself. In a Stream Generator with both <tt>DISTINCT</tt> and <tt>EXCLUDE</tt> clauses, the <tt>DISTINCT</tt> clause is applied after the <tt>EXCLUDE</tt> clause.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.5b) For the customer with <tt>custid = C13</tt>, return their information <i>excluding</i> the <tt>zipcode</tt> field inside the <tt>address</tt> object and the top-level <tt>name</tt> field.</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.custid = &quot;C13&quot;
SELECT c.* EXCLUDE address.zipcode, name;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;201 Main St.&quot;,
            &quot;city&quot;: &quot;St. Louis, MO&quot;
        },
        &quot;rating&quot;: 750
    }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Unnamed_Projections"></a><a name="Unnamed_projections" id="Unnamed_projections">Unnamed Projections</a></h3>
<p>Similar to standard SQL, the query language supports unnamed projections (a.k.a, unnamed <tt>SELECT</tt> clause items), for which names are generated rather than user-provided. Name generation has three cases:</p>
<ul>

<li>If a projection expression is a variable reference expression, its generated name is the name of the variable.</li>
<li>If a projection expression is a field access expression, its generated name is the last identifier in the expression.</li>
<li>For all other cases, the query processor will generate a unique name.</li>
</ul>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.6) Returns the last digit and the order date of all orders for the customer whose ID is &#x201c;C41&#x201d;.</p>

<div>
<div>
<pre class="source">FROM orders AS o
WHERE o.custid = &quot;C41&quot;
SELECT o.orderno % 1000,  o.order_date;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;$1&quot;: 1,
        &quot;order_date&quot;: &quot;2020-04-29&quot;
    },
    {
        &quot;$1&quot;: 6,
        &quot;order_date&quot;: &quot;2020-09-02&quot;
    }
]
</pre></div></div>

<p>In the result, <tt>$1</tt> is the generated name for <tt>o.orderno % 1000</tt>, while <tt>order_date</tt> is the generated name for <tt>o.order_date</tt>. It is good practice, however, to not rely on the randomly generated names which can be confusing and irrelevant. Instead, practice good naming conventions by providing a meaningful and concise name which properly describes the selected item.</p></div></div></div>
<div class="section">
<h3><a name="Abbreviated_Field_Access_Expressions"></a><a name="Abbreviated_field_access_expressions" id="Abbreviated_field_access_expressions">Abbreviated Field Access Expressions</a></h3>
<p>As in standard SQL, field access expressions can be abbreviated when there is no ambiguity. In the next example, the variable <tt>o</tt> is the only possible variable reference for fields <tt>orderno</tt> and <tt>order_date</tt> and thus could be omitted in the query. This practice is not recommended, however, as queries may have fields (such as <tt>custid</tt>) which can be present in multiple datasets. More information on abbreviated field access can be found in the appendix section on Variable Resolution.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.7) Same as Q3.6, omitting the variable reference for the order number and date and providing custom names for <tt>SELECT</tt> clause items.</p>

<div>
<div>
<pre class="source">FROM orders AS o
WHERE o.custid = &quot;C41&quot;
SELECT orderno % 1000 AS last_digit, order_date;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;last_digit&quot;: 1,
        &quot;order_date&quot;: &quot;2020-04-29&quot;
    },
    {
        &quot;last_digit&quot;: 6,
        &quot;order_date&quot;: &quot;2020-09-02&quot;
    }
]
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="FROM_Clause"></a><a name="From_clauses" id="From_clauses">FROM Clause</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="FromClause"></a>FromClause</h5>
<p><img src="../images/diagrams/FromClause.png" alt="" /></p></div>
<div class="section">
<h5><a name="FromTerm"></a>FromTerm</h5>
<p><img src="../images/diagrams/FromTerm.png" alt="" /></p></div>
<div class="section">
<h5><a name="NamedExpr"></a>NamedExpr</h5>
<p><img src="../images/diagrams/NamedExpr.png" alt="" /></p></div>
<div class="section">
<h5><a name="JoinStep"></a>JoinStep</h5>
<p><img src="../images/diagrams/JoinStep.png" alt="" /></p></div>
<div class="section">
<h5><a name="UnnestStep"></a>UnnestStep</h5>
<p><img src="../images/diagrams/UnnestStep.png" alt="" /></p>
<p>Synonyms for <tt>UNNEST</tt>: <tt>CORRELATE</tt>, <tt>FLATTEN</tt></p>
<p>The purpose of a <tt>FROM</tt> clause is to iterate over a collection, binding a variable to each item in turn. Here&#x2019;s a query that iterates over the <tt>customers</tt> dataset, choosing certain customers and returning some of their attributes.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.8) List the customer ids and names of the customers in zipcode 63101, in order by their customer IDs.</p>

<div>
<div>
<pre class="source">FROM customers
WHERE address.zipcode = &quot;63101&quot;
SELECT custid AS customer_id, name
ORDER BY customer_id;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;customer_id&quot;: &quot;C13&quot;,
        &quot;name&quot;: &quot;T. Cody&quot;
    },
    {
        &quot;customer_id&quot;: &quot;C31&quot;,
        &quot;name&quot;: &quot;B. Pruitt&quot;
    },
    {
        &quot;customer_id&quot;: &quot;C41&quot;,
        &quot;name&quot;: &quot;R. Dodge&quot;
    }
]
</pre></div></div>

<p>Let&#x2019;s take a closer look at what this <tt>FROM</tt> clause is doing. A <tt>FROM</tt> clause always produces a stream of bindings, in which an iteration variable is bound in turn to each item in a collection. In Q3.8, since no explicit iteration variable is provided, the <tt>FROM</tt> clause defines an implicit variable named <tt>customers</tt>, the same name as the dataset that is being iterated over. The implicit iteration variable serves as the object-name for all field-names in the query block that do not have explicit object-names. Thus, <tt>address.zipcode</tt> really means <tt>customers.address.zipcode</tt>, <tt>custid</tt> really means <tt>customers.custid</tt>, and <tt>name</tt> really means <tt>customers.name</tt>.</p>
<p>You may also provide an explicit iteration variable, as in this version of the same query:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.9) Alternative version of Q3.8 (same result).</p>

<div>
<div>
<pre class="source">FROM customers AS c
WHERE c.address.zipcode = &quot;63101&quot;
SELECT c.custid AS customer_id, c.name
ORDER BY customer_id;
</pre></div></div>

<p>In Q3.9, the variable <tt>c</tt> is bound to each <tt>customer</tt> object in turn as the query iterates over the <tt>customers</tt> dataset. An explicit iteration variable can be used to identify the fields of the referenced object, as in <tt>c.name</tt> in the <tt>SELECT</tt> clause of Q3.9. When referencing a field of an object, the iteration variable can be omitted when there is no ambiguity. For example, <tt>c.name</tt> could be replaced by <tt>name</tt> in the <tt>SELECT</tt> clause of Q3.9. That&#x2019;s why field-names like <tt>name</tt> and <tt>custid</tt> could stand by themselves in the Q3.8 version of this query.</p>
<p>In the examples above, the <tt>FROM</tt> clause iterates over the objects in a dataset. But in general, a <tt>FROM</tt> clause can iterate over any collection. For example, the objects in the <tt>orders</tt> dataset each contain a field called <tt>items</tt>, which is an array of nested objects. In some cases, you will write a <tt>FROM</tt> clause that iterates over a nested array like <tt>items</tt>.</p>
<p>The stream of objects (more accurately, variable bindings) that is produced by the <tt>FROM</tt> clause does not have any particular order. The system will choose the most efficient order for the iteration. If you want your query result to have a specific order, you must use an <tt>ORDER BY</tt> clause.</p>
<p>It&#x2019;s good practice to specify an explicit iteration variable for each collection in the <tt>FROM</tt> clause, and to use these variables to qualify the field-names in other clauses. Here are some reasons for this convention:</p>
<ul>

<li>

<p>It&#x2019;s nice to have different names for the collection as a whole and an object in the collection. For example, in the clause <tt>FROM customers AS c</tt>, the name <tt>customers</tt> represents the dataset and the name <tt>c</tt> represents one object in the dataset.</p>
</li>
<li>

<p>In some cases, iteration variables are required. For example, when joining a dataset to itself, distinct iteration variables are required to distinguish the left side of the join from the right side.</p>
</li>
<li>

<p>In a subquery it&#x2019;s sometimes necessary to refer to an object in an outer query block (this is called a <i>correlated subquery</i>). To avoid confusion in correlated subqueries, it&#x2019;s best to use explicit variables.</p>
</li>
</ul></div></div></div>
<div class="section">
<h3><a name="Joins"></a><a name="Join_clauses" id="Join_clauses">Joins</a></h3>
<p>A <tt>FROM</tt> clause gets more interesting when there is more than one collection involved. The following query iterates over two collections: <tt>customers</tt> and <tt>orders</tt>. The <tt>FROM</tt> clause produces a stream of binding tuples, each containing two variables, <tt>c</tt> and <tt>o</tt>. In each binding tuple, <tt>c</tt> is bound to an object from <tt>customers</tt>, and <tt>o</tt> is bound to an object from <tt>orders</tt>. Conceptually, at this point, the binding tuple stream contains all possible pairs of a customer and an order (this is called the <i>Cartesian product</i> of <tt>customers</tt> and <tt>orders</tt>). Of course, we are interested only in pairs where the <tt>custid</tt> fields match, and that condition is expressed in the <tt>WHERE</tt> clause, along with the restriction that the order number must be 1001.</p>
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.10) Create a packing list for order number 1001, showing the customer name and address and all the items in the order.</p>

<div>
<div>
<pre class="source">FROM customers AS c, orders AS o
WHERE c.custid = o.custid
AND o.orderno = 1001
SELECT o.orderno,
    c.name AS customer_name,
    c.address,
    o.items AS items_ordered;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1001,
        &quot;customer_name&quot;: &quot;R. Dodge&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;150 Market St.&quot;,
            &quot;city&quot;: &quot;St. Louis, MO&quot;,
            &quot;zipcode&quot;: &quot;63101&quot;
        },
        &quot;items_ordered&quot;: [
            {
                &quot;itemno&quot;: 347,
                &quot;qty&quot;: 5,
                &quot;price&quot;: 19.99
            },
            {
                &quot;itemno&quot;: 193,
                &quot;qty&quot;: 2,
                &quot;price&quot;: 28.89
            }
        ]
    }
]
</pre></div></div>

<p>Q3.10 is called a <i>join query</i> because it joins the <tt>customers</tt> collection and the <tt>orders</tt> collection, using the join condition <tt>c.custid = o.custid</tt>. In SQL++, as in SQL, you can express this query more explicitly by a <tt>JOIN</tt> clause that includes the join condition, as follows:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.11) Alternative statement of Q3.10 (same result).</p>

<div>
<div>
<pre class="source">FROM customers AS c JOIN orders AS o
    ON c.custid = o.custid
WHERE o.orderno = 1001
SELECT o.orderno,
    c.name AS customer_name,
    c.address,
    o.items AS items_ordered;
</pre></div></div>

<p>Whether you express the join condition in a <tt>JOIN</tt> clause or in a <tt>WHERE</tt> clause is a matter of taste; the result is the same. This manual will generally use a comma-separated list of collection-names in the <tt>FROM</tt> clause, leaving the join condition to be expressed elsewhere. As we&#x2019;ll soon see, in some query blocks the join condition can be omitted entirely.</p>
<p>There is, however, one case in which an explicit <tt>JOIN</tt> clause is necessary. That is when you need to join collection A to collection B, and you want to make sure that every item in collection A is present in the query result, even if it doesn&#x2019;t match any item in collection B. This kind of query is called a <i>left outer join</i>, and it is illustrated by the following example.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.12) List the customer ID and name, together with the order numbers and dates of their orders (if any) of customers T. Cody and M. Sinclair.</p>

<div>
<div>
<pre class="source">FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid
WHERE c.name = &quot;T. Cody&quot;
   OR c.name = &quot;M. Sinclair&quot;
SELECT c.custid, c.name, o.orderno, o.order_date
ORDER BY c.custid, o.order_date;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;orderno&quot;: 1002,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;order_date&quot;: &quot;2020-05-01&quot;
    },
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;orderno&quot;: 1007,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;order_date&quot;: &quot;2020-09-13&quot;
    },
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;orderno&quot;: 1008,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;order_date&quot;: &quot;2020-10-13&quot;
    },
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;orderno&quot;: 1009,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;order_date&quot;: &quot;2020-10-13&quot;
    },
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;name&quot;: &quot;M. Sinclair&quot;
    }
]
</pre></div></div>

<p>As you can see from the result of this left outer join, our data includes four orders from customer T. Cody, but no orders from customer M. Sinclair. The behavior of left outer join in SQL++ is different from that of SQL. SQL would have provided M. Sinclair with an order in which all the fields were <tt>null</tt>. SQL++, on the other hand, deals with schemaless data, which permits it to simply omit the order fields from the outer join.</p>
<p>Now we&#x2019;re ready to look at a new kind of join that was not provided (or needed) in original SQL. Consider this query:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.13) For every case in which an item is ordered in a quantity greater than 100, show the order number, date, item number, and quantity.</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
WHERE i.qty &gt; 100
SELECT o.orderno, o.order_date, i.itemno AS item_number,
    i.qty AS quantity
ORDER BY o.orderno, item_number;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1002,
        &quot;order_date&quot;: &quot;2020-05-01&quot;,
        &quot;item_number&quot;: 680,
        &quot;quantity&quot;: 150
    },
    {
        &quot;orderno&quot;: 1005,
        &quot;order_date&quot;: &quot;2020-08-30&quot;,
        &quot;item_number&quot;: 347,
        &quot;quantity&quot;: 120
    },
    {
        &quot;orderno&quot;: 1006,
        &quot;order_date&quot;: &quot;2020-09-02&quot;,
        &quot;item_number&quot;: 460,
        &quot;quantity&quot;: 120
    }
]
</pre></div></div>

<p>Q3.13 illustrates a feature called <i>left-correlation</i> in the <tt>FROM</tt> clause. Notice that we are joining <tt>orders</tt>, which is a dataset, to <tt>items</tt>, which is an array nested inside each order. In effect, for each order, we are unnesting the <tt>items</tt> array and joining it to the <tt>order</tt> as though it were a separate collection. For this reason, this kind of query is sometimes called an <i>unnesting query</i>. The keyword <tt>UNNEST</tt> may be used whenever left-correlation is used in a <tt>FROM</tt> clause, as shown in this example:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.14) Alternative statement of Q3.13 (same result).</p>

<div>
<div>
<pre class="source">FROM orders AS o UNNEST o.items AS i
WHERE i.qty &gt; 100
SELECT o.orderno, o.order_date, i.itemno AS item_number,
        i.qty AS quantity
ORDER BY o.orderno, item_number;
</pre></div></div>

<p>The results of Q3.13 and Q3.14 are exactly the same. <tt>UNNEST</tt> serves as a reminder that left-correlation is being used to join an object with its nested items. The join condition in Q3.14 is expressed by the left-correlation: each order <tt>o</tt> is joined to its own items, referenced as <tt>o.items</tt>. The result of the <tt>FROM</tt> clause is a stream of binding tuples, each containing two variables, <tt>o</tt> and <tt>i</tt>. The variable <tt>o</tt> is bound to an order and the variable <tt>i</tt> is bound to one item inside that order.</p>
<p>Like <tt>JOIN</tt>, <tt>UNNEST</tt> has a <tt>LEFT OUTER</tt> option. Q3.14 could have specified:</p>

<div>
<div>
<pre class="source">FROM orders AS o LEFT OUTER UNNEST o.items AS i
</pre></div></div>

<p>In this case, orders that have no nested items would appear in the query result.</p></div></div></div></div>
<div class="section">
<h2><a name="LET_Clause"></a><a name="Let_clauses" id="Let_clauses">LET Clause</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="LetClause"></a>LetClause</h5>
<p><img src="../images/diagrams/LetClause.png" alt="" /></p>
<p>Synonyms for <tt>LET</tt>: <tt>LETTING</tt></p>
<p><tt>LET</tt> clauses can be useful when a (complex) expression is used several times within a query, allowing it to be written once to make the query more concise. The word <tt>LETTING</tt> can also be used, although this is not as common. The next query shows an example.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.15) For each item in an order, the revenue is defined as the quantity times the price of that item. Find individual items for which the revenue is greater than 5000. For each of these, list the order number, item number, and revenue, in descending order by revenue.</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
LET revenue = i.qty * i.price
WHERE revenue &gt; 5000
SELECT o.orderno, i.itemno, revenue
ORDER by revenue desc;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1006,
        &quot;itemno&quot;: 460,
        &quot;revenue&quot;: 11997.6
    },
    {
        &quot;orderno&quot;: 1002,
        &quot;itemno&quot;: 460,
        &quot;revenue&quot;: 9594.05
    },
    {
        &quot;orderno&quot;: 1006,
        &quot;itemno&quot;: 120,
        &quot;revenue&quot;: 5525
    }
]
</pre></div></div>

<p>The expression for computing revenue is defined once in the <tt>LET</tt> clause and then used three times in the remainder of the query. Avoiding repetition of the revenue expression makes the query shorter and less prone to errors.</p></div></div></div></div>
<div class="section">
<h2><a name="WHERE_Clause"></a><a name="Where_having_clauses" id="Where_having_clauses">WHERE Clause</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="WhereClause"></a>WhereClause</h5>
<p><img src="../images/diagrams/WhereClause.png" alt="" /></p>
<p>The purpose of a <tt>WHERE</tt> clause is to operate on the stream of binding tuples generated by the <tt>FROM</tt> clause, filtering out the tuples that do not satisfy a certain condition. The condition is specified by an expression based on the variable names in the binding tuples. If the expression evaluates to true, the tuple remains in the stream; if it evaluates to anything else, including <tt>null</tt> or <tt>missing</tt>, it is filtered out. The surviving tuples are then passed along to the next clause to be processed (usually either <tt>GROUP BY</tt> or <tt>SELECT</tt>).</p>
<p>Often, the expression in a <tt>WHERE</tt> clause is some kind of comparison like <tt>quantity &gt; 100</tt>. However, any kind of expression is allowed in a <tt>WHERE</tt> clause. The only thing that matters is whether the expression returns <tt>true</tt> or not.</p></div></div></div></div>
<div class="section">
<h2><a name="Grouping" id="Grouping">Grouping</a></h2>
<p>Grouping is especially important when manipulating hierarchies like the ones that are often found in JSON data. Often you will want to generate output data that includes both summary data and line items within the summaries. For this purpose, SQL++ supports several important extensions to the traditional grouping features of SQL. The familiar <tt>GROUP BY</tt> and <tt>HAVING</tt> clauses are still there, and they are joined by a new clause called <tt>GROUP AS</tt>. We&#x2019;ll illustrate these clauses by a series of examples.</p>
<div class="section">
<h3><a name="GROUP_BY_Clause"></a><a name="Group_By_clauses" id="Group_By_clauses">GROUP BY Clause</a></h3>
<div class="section">
<div class="section">
<h5><a name="GroupByClause"></a>GroupByClause</h5>
<p><img src="../images/diagrams/GroupByClause.png" alt="" /></p></div>
<div class="section">
<h5><a name="GroupingElement"></a>GroupingElement</h5>
<p><img src="../images/diagrams/GroupingElement.png" alt="" /></p></div>
<div class="section">
<h5><a name="OrdinaryGroupingSet"></a>OrdinaryGroupingSet</h5>
<p><img src="../images/diagrams/OrdinaryGroupingSet.png" alt="" /></p></div>
<div class="section">
<h5><a name="NamedExpr"></a>NamedExpr</h5>
<p><img src="../images/diagrams/NamedExpr.png" alt="" /></p>
<p>We&#x2019;ll begin our discussion of grouping with an example from ordinary SQL.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.16) List the number of orders placed by each customer who has placed an order.</p>

<div>
<div>
<pre class="source">SELECT o.custid, COUNT(o.orderno) AS `order count`
FROM orders AS o
GROUP BY o.custid
ORDER BY o.custid;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;order count&quot;: 4,
        &quot;custid&quot;: &quot;C13&quot;
    },
    {
        &quot;order count&quot;: 1,
        &quot;custid&quot;: &quot;C31&quot;
    },
    {
        &quot;order count&quot;: 1,
        &quot;custid&quot;: &quot;C35&quot;
    },
    {
        &quot;order count&quot;: 1,
        &quot;custid&quot;: &quot;C37&quot;
    },
    {
        &quot;order count&quot;: 2,
        &quot;custid&quot;: &quot;C41&quot;
    }
]
</pre></div></div>

<p>The input to a <tt>GROUP BY</tt> clause is the stream of binding tuples generated by the <tt>FROM</tt> and <tt>WHERE</tt>clauses. In this query, before grouping, the variable <tt>o</tt> is bound to each object in the <tt>orders</tt> collection in turn.</p>
<p>SQL++ evaluates the expression in the <tt>GROUP BY</tt> clause, called the grouping expression, once for each of the binding tuples. It then organizes the results into groups in which the grouping expression has a common value (as defined by the <tt>=</tt> operator). In this example, the grouping expression is <tt>o.custid</tt>, and each of the resulting groups is a set of <tt>orders</tt> that have the same <tt>custid</tt>. If necessary, a group is formed for <tt>orders</tt> in which <tt>custid</tt> is <tt>null</tt>, and another group is formed for <tt>orders</tt> that have no <tt>custid</tt>. This query uses the aggregating function <tt>COUNT(o.orderno)</tt>, which counts how many order numbers are in each group. If we are sure that each order object has a distinct <tt>orderno</tt>, we could also simply count the order objects in each group by using <tt>COUNT(*)</tt> in place of <tt>COUNT(o.orderno)</tt>.</p>
<p>In the <tt>GROUP BY</tt>clause, you may optionally define an alias for the grouping expression. For example, in Q3.16, you could have written <tt>GROUP BY o.custid AS cid</tt>. The alias <tt>cid</tt> could then be used in place of the grouping expression in later clauses. In cases where the grouping expression contains an operator, it is especially helpful to define an alias (for example, <tt>GROUP BY salary + bonus AS pay)</tt>.</p>
<p>Q3.16 had a single grouping expression, <tt>o.custid</tt>. If a query has multiple grouping expressions, the combination of grouping expressions is evaluated for every binding tuple, and the stream of binding tuples is partitioned into groups that have values in common for all of the grouping expressions. We&#x2019;ll see an example of such a query in Q3.18.</p>
<p>After grouping, the number of binding tuples is reduced: instead of a binding tuple for each of the input objects, there is a binding tuple for each group. The grouping expressions (identified by their aliases, if any) are bound to the results of their evaluations. However, all the non-grouping fields (that is, fields that were not named in the grouping expressions), are accessible only in a special way: as an argument of one of the special aggregation pseudo-functions such as: <tt>SUM</tt>, <tt>AVG</tt>, <tt>MAX</tt>, <tt>MIN</tt>, <tt>STDEV</tt> and <tt>COUNT</tt>. The clauses that come after grouping can access only properties of groups, including the grouping expressions and aggregate properties of the groups such as <tt>COUNT(o.orderno)</tt> or <tt>COUNT(*)</tt>. (We&#x2019;ll see an exception when we discuss the new <tt>GROUP AS</tt> clause.)</p>
<p>You may notice that the results of Q3.16 do not include customers who have no <tt>orders</tt>. If we want to include these <tt>customers</tt>, we need to use an outer join between the <tt>customers</tt> and <tt>orders</tt> collections. This is illustrated by the following example, which also includes the name of each customer.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.17) List the number of orders placed by each customer including those customers who have placed no orders.</p>

<div>
<div>
<pre class="source">SELECT c.custid, c.name, COUNT(o.orderno) AS `order count`
FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid
GROUP BY c.custid, c.name
ORDER BY c.custid;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;order count&quot;: 4,
        &quot;name&quot;: &quot;T. Cody&quot;
    },
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;order count&quot;: 0,
        &quot;name&quot;: &quot;M. Sinclair&quot;
    },
    {
        &quot;custid&quot;: &quot;C31&quot;,
        &quot;order count&quot;: 1,
        &quot;name&quot;: &quot;B. Pruitt&quot;
    },
    {
        &quot;custid&quot;: &quot;C35&quot;,
        &quot;order count&quot;: 1,
        &quot;name&quot;: &quot;J. Roberts&quot;
    },
    {
        &quot;custid&quot;: &quot;C37&quot;,
        &quot;order count&quot;: 1,
        &quot;name&quot;: &quot;T. Henry&quot;
    },
    {
        &quot;custid&quot;: &quot;C41&quot;,
        &quot;order count&quot;: 2,
        &quot;name&quot;: &quot;R. Dodge&quot;
    },
    {
        &quot;custid&quot;: &quot;C47&quot;,
        &quot;order count&quot;: 0,
        &quot;name&quot;: &quot;S. Logan&quot;
    }
]
</pre></div></div>

<p>Notice in Q3.17 what happens when the special aggregation function <tt>COUNT</tt> is applied to a collection that does not exist, such as the orders of M. Sinclair: it returns zero. This behavior is unlike that of the other special aggregation functions <tt>SUM</tt>, <tt>AVG</tt>, <tt>MAX</tt>, and <tt>MIN</tt>, which return <tt>null</tt> if their operand does not exist. This should make you cautious about the <tt>COUNT</tt> function: If it returns zero, that may mean that the collection you are counting has zero members, or that it does not exist, or that you have misspelled the collection&#x2019;s name.</p>
<p>Q3.17 also shows how a query block can have more than one grouping expression. In general, the <tt>GROUP BY</tt>clause produces a binding tuple for each different combination of values for the grouping expressions. In Q3.17, the <tt>c.custid</tt> field uniquely identifies a customer, so adding <tt>c.name</tt> as a grouping expression does not result in any more groups. Nevertheless, <tt>c.name</tt> must be included as a grouping expression if it is to be referenced outside (after) the <tt>GROUP BY</tt> clause. If <tt>c.name</tt> were not included in the <tt>GROUP BY</tt> clause, it would not be a group property and could not be used in the <tt>SELECT</tt> clause.</p>
<p>Of course, a grouping expression need not be a simple field-name. In Q3.18, orders are grouped by month, using a temporal function to extract the month component of the order dates. In cases like this, it is helpful to define an alias for the grouping expression so that it can be referenced elsewhere in the query e.g. in the <tt>SELECT</tt> clause.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.18) Find the months in 2020 that had the largest numbers of orders; list the months and their numbers of orders. (Return the top three.)</p>

<div>
<div>
<pre class="source">FROM orders AS o
WHERE get_year(date(o.order_date)) = 2020
GROUP BY get_month(date(o.order_date)) AS month
SELECT month, COUNT(*) AS order_count
ORDER BY order_count DESC, month DESC
LIMIT 3;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;month&quot;: 10,
        &quot;order_count&quot;: 2
    },
    {
        &quot;month&quot;: 9,
        &quot;order_count&quot;: 2
    },
    {
        &quot;month&quot;: 8,
        &quot;order_count&quot;: 1
    }
]
</pre></div></div>

<p>Groups are commonly formed from named collections like <tt>customers</tt> and <tt>orders</tt>. But in some queries you need to form groups from a collection that is nested inside another collection, such as <tt>items</tt> inside <tt>orders</tt>. In SQL++ you can do this by using left-correlation in the <tt>FROM</tt> clause to unnest the inner collection, joining the inner collection with the outer collection, and then performing the grouping on the join, as illustrated in Q3.19.</p>
<p>Q3.19 also shows how a <tt>LET</tt> clause can be used after a <tt>GROUP BY</tt> clause to define an expression that is referenced multiple times in later clauses.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.19) For each order, define the total revenue of the order as the sum of quantity times price for all the items in that order. List the total revenue for all the orders placed by the customer with id &#x201c;C13&#x201d;, in descending order by total revenue.</p>

<div>
<div>
<pre class="source">FROM orders as o, o.items as i
WHERE o.custid = &quot;C13&quot;
GROUP BY o.orderno
LET total_revenue = sum(i.qty * i.price)
SELECT o.orderno, total_revenue
ORDER BY total_revenue desc;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1002,
        &quot;total_revenue&quot;: 10906.55
    },
    {
        &quot;orderno&quot;: 1008,
        &quot;total_revenue&quot;: 1999.8
    },
    {
        &quot;orderno&quot;: 1007,
        &quot;total_revenue&quot;: 130.45
    }
]
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="ROLLUP"></a><a name="Rollup" id="Rollup">ROLLUP</a></h4>
<p>The <tt>ROLLUP</tt> subclause is an aggregation feature that extends the functionality of the <tt>GROUP BY</tt> clause. It returns extra <i>super-aggregate</i> items in the query results, giving subtotals and a grand total for the aggregate functions in the query. To illustrate, first consider the following query.</p>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.R1) List the number of orders, grouped by customer region and city.</p>

<div>
<div>
<pre class="source">SELECT customer_region AS Region,
       customer_city AS City,
       COUNT(o.orderno) AS `Order Count`
FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid
LET address_line = SPLIT(c.address.city, &quot;,&quot;),
    customer_city = TRIM(address_line[0]),
    customer_region = TRIM(address_line[1])
GROUP BY customer_region, customer_city
ORDER BY customer_region ASC, customer_city ASC, `Order Count` DESC;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
  {
    &quot;Region&quot;: &quot;Italy&quot;,
    &quot;City&quot;: &quot;Rome&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Boston&quot;,
    &quot;Order Count&quot;: 2
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Hanover&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;City&quot;: &quot;St. Louis&quot;,
    &quot;Order Count&quot;: 7
  }
]
</pre></div></div>

<p>This query uses string functions to split each customer&#x2019;s address into city and region. The query then counts the total number of orders placed by each customer, and groups the results first by customer region, then by customer city. The aggregate results (labeled <tt>Order Count</tt>) are only shown by city, and there are no subtotals or grand total. We can add these using the <tt>ROLLUP</tt> subclause, as in the following example.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.R2) List the number of orders by customer region and city, including subtotals and a grand total.</p>

<div>
<div>
<pre class="source">SELECT customer_region AS Region,
       customer_city AS City,
       COUNT(o.orderno) AS `Order Count`
FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid
LET address_line = SPLIT(c.address.city, &quot;,&quot;),
    customer_city = TRIM(address_line[0]),
    customer_region = TRIM(address_line[1])
GROUP BY ROLLUP(customer_region, customer_city)
ORDER BY customer_region ASC, customer_city ASC, `Order Count` DESC;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
  {
    &quot;Region&quot;: null,
    &quot;City&quot;: null,
    &quot;Order Count&quot;: 9
  },
  {
    &quot;Region&quot;: &quot;Italy&quot;,
    &quot;City&quot;: null,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;Italy&quot;,
    &quot;City&quot;: &quot;Rome&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: null,
    &quot;Order Count&quot;: 2
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Boston&quot;,
    &quot;Order Count&quot;: 2
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Hanover&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;City&quot;: null,
    &quot;Order Count&quot;: 7
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;City&quot;: &quot;St. Louis&quot;,
    &quot;Order Count&quot;: 7
  }
]
</pre></div></div>

<p>With the addition of the <tt>ROLLUP</tt> subclause, the results now include an extra item at the start of each region, giving the subtotal for that region. There is also another extra item at the very start of the results, giving the grand total for all regions.</p>
<p>The order of the fields specified by the <tt>ROLLUP</tt> subclause determines the hierarchy of the super-aggregate items. The customer region is specified first, followed by the customer city; so the results are aggregated by region first, and then by city within each region.</p>
<p>The grand total returns <tt>null</tt> as a value for the city and the region, and the subtotals return <tt>null</tt> as the value for the city, which may make the results hard to understand at first glance. A workaround for this is given in the next example.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.R3) List the number of orders by customer region and city, with meaningful subtotals and grand total.</p>

<div>
<div>
<pre class="source">SELECT IFNULL(customer_region, &quot;All regions&quot;) AS Region,
       IFNULL(customer_city, &quot;All cities&quot;) AS City,
       COUNT(o.orderno) AS `Order Count`
FROM customers AS c LEFT OUTER JOIN orders AS o ON c.custid = o.custid
LET address_line = SPLIT(c.address.city, &quot;,&quot;),
    customer_city = TRIM(address_line[0]),
    customer_region = TRIM(address_line[1])
GROUP BY ROLLUP(customer_region, customer_city)
ORDER BY customer_region ASC, customer_city ASC, `Order Count` DESC;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;City&quot;: &quot;All cities&quot;,
    &quot;Order Count&quot;: 9
  },
  {
    &quot;Region&quot;: &quot;Italy&quot;,
    &quot;City&quot;: &quot;All cities&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;Italy&quot;,
    &quot;City&quot;: &quot;Rome&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;All cities&quot;,
    &quot;Order Count&quot;: 2
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Boston&quot;,
    &quot;Order Count&quot;: 2
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;City&quot;: &quot;Hanover&quot;,
    &quot;Order Count&quot;: 0
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;City&quot;: &quot;All cities&quot;,
    &quot;Order Count&quot;: 7
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;City&quot;: &quot;St. Louis&quot;,
    &quot;Order Count&quot;: 7
  }
]
</pre></div></div>

<p>This query uses the <tt>IFNULL</tt> function to populate the region and city fields with meaningful values for the super-aggregate items. This makes the results clearer and more readable.</p></div></div>
<div class="section">
<h4><a name="CUBE"></a><a name="Cube" id="Cube">CUBE</a></h4>
<p>The <tt>CUBE</tt> subclause is similar to the <tt>ROLLUP</tt> subclause, in that it returns extra super-aggregate items in the query results, giving subtotals and a grand total for the aggregate functions. Whereas <tt>ROLLUP</tt> returns a grand total and a hierarchy of subtotals based on the specified fields, the <tt>CUBE</tt> subclause returns a grand total and subtotals for every possible combination of the specified fields.</p>
<p>The following example is a modification of Q3.R3 which illustrates the <tt>CUBE</tt> subclause.</p>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.C) List the number of orders by customer region and order date, with all possible subtotals and a grand total.</p>

<div>
<div>
<pre class="source">SELECT IFNULL(customer_region, &quot;All regions&quot;) AS Region,
       IFNULL(order_month, &quot;All months&quot;) AS Month,
       COUNT(o.orderno) AS `Order Count`
FROM customers AS c INNER JOIN orders AS o ON c.custid = o.custid
LET address_line = SPLIT(c.address.city, &quot;,&quot;),
    customer_region = TRIM(address_line[1]),
    order_month = get_month(date(o.order_date))
GROUP BY CUBE(customer_region, order_month)
ORDER BY customer_region ASC, order_month ASC;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 9,
    &quot;Month&quot;: &quot;All months&quot;
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 4
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 5
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 6
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 7
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 8
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 2,
    &quot;Month&quot;: 9
  },
  {
    &quot;Region&quot;: &quot;All regions&quot;,
    &quot;Order Count&quot;: 2,
    &quot;Month&quot;: 10
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;Order Count&quot;: 2,
    &quot;Month&quot;: &quot;All months&quot;
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 7
  },
  {
    &quot;Region&quot;: &quot;MA&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 8
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 7,
    &quot;Month&quot;: &quot;All months&quot;
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 4
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 5
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 1,
    &quot;Month&quot;: 6
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 2,
    &quot;Month&quot;: 9
  },
  {
    &quot;Region&quot;: &quot;MO&quot;,
    &quot;Order Count&quot;: 2,
    &quot;Month&quot;: 10
  }
]
</pre></div></div>

<p>To simplify the results, this query uses an inner join, so that customers who have not placed an order are not included in the totals. The query uses string functions to extract the region from each customer&#x2019;s address, and a temporal function to extract the year from the order date.</p>
<p>The query uses the <tt>CUBE</tt> subclause with customer region and order month. This means that there are four possible aggregates to calculate:</p>
<ul>

<li>All regions, all months</li>
<li>All regions, each month</li>
<li>Each region, all months</li>
<li>Each region, each month</li>
</ul>
<p>The results start with the grand total, showing the total number of orders across all regions for all months. This is followed by date subtotals, showing the number of orders across all regions for each month. Following that are the regional subtotals, showing the total number of orders for all months in each region; and the result items, giving the number of orders for each month in each region.</p>
<p>The query also uses the <tt>IFNULL</tt> function to populate the region and date fields with meaningful values for the super-aggregate items. This makes the results clearer and more readable.</p></div></div></div>
<div class="section">
<h3><a name="HAVING_Clause"></a><a name="Having_clauses" id="Having_clauses">HAVING Clause</a></h3>
<div class="section">
<div class="section">
<h5><a name="HavingClause"></a>HavingClause</h5>
<p><img src="../images/diagrams/HavingClause.png" alt="" /></p>
<p>The <tt>HAVING</tt> clause is very similar to the <tt>WHERE</tt> clause, except that it comes after <tt>GROUP BY</tt> and applies a filter to groups rather than to individual objects. Here&#x2019;s an example of a <tt>HAVING</tt> clause that filters orders by applying a condition to their nested arrays of <tt>items</tt>.</p>
<p>By adding a <tt>HAVING</tt> clause to Q3.19, we can filter the results to include only those orders whose total revenue is greater than 1000, as shown in Q3.22.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.20) Modify Q3.19 to include only orders whose total revenue is greater than 5000.</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items as i
WHERE o.custid = &quot;C13&quot;
GROUP BY o.orderno
LET total_revenue = sum(i.qty * i.price)
HAVING total_revenue &gt; 5000
SELECT o.orderno, total_revenue
ORDER BY total_revenue desc;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1002,
        &quot;total_revenue&quot;: 10906.55
    }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Aggregation_Pseudo-Functions"></a><a name="Aggregation_PseudoFunctions" id="Aggregation_PseudoFunctions">Aggregation Pseudo-Functions</a></h3>
<p>SQL provides several special functions for performing aggregations on groups including: <tt>SUM</tt>, <tt>AVG</tt>, <tt>MAX</tt>, <tt>MIN</tt>, and <tt>COUNT</tt> (some implementations provide more). These same functions are supported in SQL++. However, it&#x2019;s worth spending some time on these special functions because they don&#x2019;t behave like ordinary functions. They are called &#x201c;pseudo-functions&#x201d; here because they don&#x2019;t evaluate their operands in the same way as ordinary functions. To see the difference, consider these two examples, which are syntactically similar:</p>
<div class="section">
<div class="section">
<h5><a name="Example_1"></a>Example 1</h5>

<div>
<div>
<pre class="source">SELECT LENGTH(name) FROM customers
</pre></div></div>

<p>In Example 1, <tt>LENGTH</tt> is an ordinary function. It simply evaluates its operand (name) and then returns a result computed from the operand.</p></div>
<div class="section">
<h5><a name="Example_2"></a>Example 2</h5>

<div>
<div>
<pre class="source">SELECT AVG(rating) FROM customers
</pre></div></div>

<p>The effect of <tt>AVG</tt> in Example 2 is quite different. Rather than performing a computation on an individual rating value, <tt>AVG</tt> has a global effect: it effectively restructures the query. As a pseudo-function, <tt>AVG</tt> requires its operand to be a group; therefore, it automatically collects all the rating values from the query block and forms them into a group.</p>
<p>The aggregation pseudo-functions always require their operand to be a group. In some queries, the group is explicitly generated by a <tt>GROUP BY</tt> clause, as in Q3.21:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.21) List the average credit rating of customers by zipcode.</p>

<div>
<div>
<pre class="source">FROM customers AS c
GROUP BY c.address.zipcode AS zip
SELECT zip, AVG(c.rating) AS `avg credit rating`
ORDER BY zip;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;avg credit rating&quot;: 625
    },
    {
        &quot;avg credit rating&quot;: 657.5,
        &quot;zip&quot;: &quot;02115&quot;
    },
    {
        &quot;avg credit rating&quot;: 690,
        &quot;zip&quot;: &quot;02340&quot;
    },
    {
        &quot;avg credit rating&quot;: 695,
        &quot;zip&quot;: &quot;63101&quot;
    }
]
</pre></div></div>

<p>Note in the result of Q3.21 that one or more customers had no zipcode. These customers were formed into a group for which the value of the grouping key is missing. When the query results were returned in JSON format, the <tt>missing</tt> key simply does not appear. Also note that the group whose key is <tt>missing</tt> appears first because <tt>missing</tt> is considered to be smaller than any other value. If some customers had had <tt>null</tt> as a zipcode, they would have been included in another group, appearing after the <tt>missing</tt> group but before the other groups.</p>
<p>When an aggregation pseudo-function is used without an explicit <tt>GROUP BY</tt> clause, it implicitly forms the entire query block into a single group, as in Q3.22:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.22) Find the average credit rating among all customers.</p>

<div>
<div>
<pre class="source">FROM customers AS c
SELECT AVG(c.rating) AS `avg credit rating`;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;avg credit rating&quot;: 670
    }
]
</pre></div></div>

<p>The aggregation pseudo-function <tt>COUNT</tt> has a special form in which its operand is <tt>*</tt> instead of an expression.</p>
<p>For example, <tt>SELECT COUNT(*) FROM customers</tt> simply returns the total number of customers, whereas <tt>SELECT COUNT(rating) FROM customers</tt> returns the number of customers who have known ratings (that is, their ratings are not <tt>null</tt> or <tt>missing</tt>).</p>
<p>Because the aggregation pseudo-functions sometimes restructure their operands, they can be used only in query blocks where (explicit or implicit) grouping is being done. Therefore the pseudo-functions cannot operate directly on arrays or multisets. For operating directly on JSON collections, SQL++ provides a set of ordinary functions for computing aggregations. Each ordinary aggregation function (except the ones corresponding to <tt>COUNT</tt> and <tt>ARRAY_AGG</tt>) has two versions: one that ignores <tt>null</tt> and <tt>missing</tt> values and one that returns <tt>null</tt> if a <tt>null</tt> or <tt>missing</tt> value is encountered anywhere in the collection. The names of the aggregation functions are as follows:</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Aggregation pseudo-function; operates on groups only </th>
<th> Ordinary function: Ignores NULL or MISSING values </th>
<th> Ordinary function: Returns NULL if NULL or MISSING are encountered</th></tr>
</thead><tbody>

<tr class="b">
<td>SUM</td>
<td> ARRAY_SUM</td>
<td> STRICT_SUM </td></tr>
<tr class="a">
<td> AVG </td>
<td>ARRAY_MAX</td>
<td> STRICT_MAX </td></tr>
<tr class="b">
<td> MAX </td>
<td> ARRAY_MIN</td>
<td> STRICT_MIN </td></tr>
<tr class="a">
<td> MIN </td>
<td> ARRAY_AVG</td>
<td> STRICT_AVG </td></tr>
<tr class="b">
<td> COUNT </td>
<td>ARRAY_COUNT</td>
<td>STRICT_COUNT (see exception below) </td></tr>
<tr class="a">
<td>STDDEV_SAMP</td>
<td>ARRAY_STDDEV_SAMP</td>
<td> STRICT_STDDEV_SAMP </td></tr>
<tr class="b">
<td>STDDEV_POP</td>
<td>ARRAY_STDDEV_POP</td>
<td> STRICT_STDDEV_POP </td></tr>
<tr class="a">
<td>VAR_SAMP</td>
<td>ARRAY_VAR_SAMP</td>
<td> STRICT_VAR_SAMP </td></tr>
<tr class="b">
<td>VAR_POP</td>
<td>ARRAY_VAR_POP</td>
<td> STRICT_VAR_POP </td></tr>
<tr class="a">
<td>SKEWENESS</td>
<td>ARRAY_SKEWNESS</td>
<td> STRICT_SKEWNESS </td></tr>
<tr class="b">
<td>KURTOSIS</td>
<td>ARRAY_KURTOSIS</td>
<td> STRICT_KURTOSIS </td></tr>
<tr class="a">
<td> </td>
<td>ARRAY_AGG</td>
<td> </td></tr>
</tbody>
</table>
<p>Exception: the ordinary aggregation function STRICT_COUNT operates on any collection, and returns a count of its items, including null values in the count. In this respect, STRICT_COUNT is more similar to COUNT(*) than to COUNT(expression).</p>
<p>Note that the ordinary aggregation functions that ignore <tt>null</tt> have names beginning with &#x201c;ARRAY&#x201d;. This naming convention has historical roots. Despite their names, the functions operate on both arrays and multisets.</p>
<p>Because of the special properties of the aggregation pseudo-functions, SQL (and therefore SQL++) is not a pure functional language. But every query that uses a pseudo-function can be expressed as an equivalent query that uses an ordinary function. Q3.23 is an example of how queries can be expressed without pseudo-functions. A more detailed explanation of all of the functions is also available in the section on <a href="builtins.html#AggregateFunctions">Aggregate Functions</a>.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.23) Alternative form of Q3.22, using the ordinary function <tt>ARRAY_AVG</tt> rather than the aggregating pseudo-function <tt>AVG</tt>.</p>

<div>
<div>
<pre class="source">SELECT ARRAY_AVG(
    (SELECT VALUE c.rating
    FROM customers AS c) ) AS `avg credit rating`;
</pre></div></div>

<p>Result (same as Q3.22):</p>

<div>
<div>
<pre class="source">[
    {
        &quot;avg credit rating&quot;: 670
    }
]
</pre></div></div>

<p>If the function <tt>STRICT_AVG</tt> had been used in Q3.23 in place of <tt>ARRAY_AVG</tt>, the average credit rating returned by the query would have been <tt>null</tt>, because at least one customer has no credit rating.</p></div></div></div>
<div class="section">
<h3><a name="GROUP_AS_Clause"></a><a name="Group_As_clauses" id="Group_As_clauses">GROUP AS Clause</a></h3>
<div class="section">
<div class="section">
<h5><a name="GroupAsClause"></a>GroupAsClause</h5>
<p><img src="../images/diagrams/GroupAsClause.png" alt="" /></p>
<p>JSON is a hierarchical format, and a fully featured JSON query language needs to be able to produce hierarchies of its own, with computed data at every level of the hierarchy. The key feature of SQL++ that makes this possible is the <tt>GROUP AS</tt> clause.</p>
<p>A query may have a <tt>GROUP AS</tt> clause only if it has a <tt>GROUP BY</tt> clause. The <tt>GROUP BY</tt> clause &#x201c;hides&#x201d; the original objects in each group, exposing only the grouping expressions and special aggregation functions on the non-grouping fields. The purpose of the <tt>GROUP AS</tt> clause is to make the original objects in the group visible to subsequent clauses. Thus the query can generate output data both for the group as a whole and for the individual objects inside the group.</p>
<p>For each group, the <tt>GROUP AS</tt> clause preserves all the objects in the group, just as they were before grouping, and gives a name to this preserved group. The group name can then be used in the <tt>FROM</tt> clause of a subquery to process and return the individual objects in the group.</p>
<p>To see how this works, we&#x2019;ll write some queries that investigate the customers in each zipcode and their credit ratings. This would be a good time to review the sample database in <a href="#Manual_data">Appendix 4</a>. A part of the data is summarized below.</p>

<div>
<div>
<pre class="source">Customers in zipcode 02115:
    C35, J. Roberts, rating 565
    C37, T. Henry, rating 750

Customers in zipcode 02340:
    C25, M. Sinclair, rating 690

Customers in zipcode 63101:
    C13, T. Cody, rating 750
    C31, B. Pruitt, (no rating)
    C41, R. Dodge, rating 640

Customers with no zipcode:
    C47, S. Logan, rating 625
</pre></div></div>

<p>Now let&#x2019;s consider the effect of the following clauses:</p>

<div>
<div>
<pre class="source">FROM customers AS c
GROUP BY c.address.zipcode
GROUP AS g
</pre></div></div>

<p>This query fragment iterates over the <tt>customers</tt> objects, using the iteration variable <tt>c</tt>. The <tt>GROUP BY</tt> clause forms the objects into groups, each with a common zipcode (including one group for customers with no zipcode). After the <tt>GROUP BY</tt> clause, we can see the grouping expression, <tt>c.address.zipcode</tt>, but other fields such as <tt>c.custid</tt> and <tt>c.name</tt> are visible only to special aggregation functions.</p>
<p>The clause <tt>GROUP AS g</tt> now makes the original objects visible again. For each group in turn, the variable <tt>g</tt> is bound to a multiset of objects, each of which has a field named <tt>c</tt>, which in turn contains one of the original objects. Thus after <tt>GROUP AS g</tt>, for the group with zipcode 02115, <tt>g</tt> is bound to the following multiset:</p>

<div>
<div>
<pre class="source">[
    { &quot;c&quot;:
        { &quot;custid&quot;: &quot;C35&quot;,
          &quot;name&quot;: &quot;J. Roberts&quot;,
          &quot;address&quot;:
            { &quot;street&quot;: &quot;420 Green St.&quot;,
              &quot;city&quot;: &quot;Boston, MA&quot;,
              &quot;zipcode&quot;: &quot;02115&quot;
            },
          &quot;rating&quot;: 565
        }
    },
    { &quot;c&quot;:
        { &quot;custid&quot;: &quot;C37&quot;,
          &quot;name&quot;: &quot;T. Henry&quot;,
          &quot;address&quot;:
            { &quot;street&quot;: &quot;120 Harbor Blvd.&quot;,
              &quot;city&quot;: &quot;St. Louis, MO&quot;,
              &quot;zipcode&quot;: &quot;02115&quot;
            },
          &quot;rating&quot;: 750
        }
    }
]
</pre></div></div>

<p>Thus, the clauses following <tt>GROUP AS</tt> can see the original objects by writing subqueries that iterate over the multiset <tt>g</tt>.</p>
<p>The extra level named <tt>c</tt> was introduced into this multiset because the groups might have been formed from a join of two or more collections. Suppose that the <tt>FROM</tt> clause looked like <tt>FROM customers AS c, orders AS o</tt>. Then each item in the group would contain both a <tt>customers</tt> object and an <tt>orders</tt> object, and these two objects might both have a field with the same name. To avoid ambiguity, each of the original objects is wrapped in an &#x201c;outer&#x201d; object that gives it the name of its iteration variable in the <tt>FROM</tt> clause. Consider this fragment:</p>

<div>
<div>
<pre class="source">FROM customers AS c, orders AS o
WHERE c.custid = o.custid
GROUP BY c.address.zipcode
GROUP AS g
</pre></div></div>

<p>In this case, following <tt>GROUP AS g</tt>, the variable <tt>g</tt> would be bound to the following collection:</p>

<div>
<div>
<pre class="source">[
    { &quot;c&quot;: { an original customers object },
      &quot;o&quot;: { an original orders object }
    },
    { &quot;c&quot;: { another customers object },
      &quot;o&quot;: { another orders object }
    },
    ...
]
</pre></div></div>

<p>After using <tt>GROUP AS</tt> to make the content of a group accessible, you will probably want to write a subquery to access that content. A subquery for this purpose is written in exactly the same way as any other subquery. The name specified in the <tt>GROUP AS</tt> clause (<tt>g</tt> in the above example) is the name of a collection of objects. You can write a <tt>FROM</tt> clause to iterate over the objects in the collection, and you can specify an iteration variable to represent each object in turn. For <tt>GROUP AS</tt> queries in this manual, we&#x2019;ll use <tt>g</tt>as the name of the reconstituted group, and <tt>gi</tt> as an iteration variable representing one object inside the group. Of course, you can use any names you like for these purposes.</p>
<p>Now we are ready to take a look at how <tt>GROUP AS</tt> might be used in a query. Suppose that we want to group customers by zipcode, and for each group we want to see the average credit rating and a list of the individual customers in the group. Here&#x2019;s a query that does that:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.24) For each zipcode, list the average credit rating in that zipcode, followed by the customer numbers and names in numeric order.</p>

<div>
<div>
<pre class="source">FROM customers AS c
GROUP BY c.address.zipcode AS zip
GROUP AS g
SELECT zip, AVG(c.rating) AS `avg credit rating`,
    (FROM g AS gi
     SELECT gi.c.custid, gi.c.name
     ORDER BY gi.c.custid) AS `local customers`
ORDER BY zip;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;avg credit rating&quot;: 625,
        &quot;local customers&quot;: [
            {
                &quot;custid&quot;: &quot;C47&quot;,
                &quot;name&quot;: &quot;S. Logan&quot;
            }
        ]
    },
    {
        &quot;avg credit rating&quot;: 657.5,
        &quot;local customers&quot;: [
            {
                &quot;custid&quot;: &quot;C35&quot;,
                &quot;name&quot;: &quot;J. Roberts&quot;
            },
            {
                &quot;custid&quot;: &quot;C37&quot;,
                &quot;name&quot;: &quot;T. Henry&quot;
            }
        ],
        &quot;zip&quot;: &quot;02115&quot;
    },
    {
        &quot;avg credit rating&quot;: 690,
        &quot;local customers&quot;: [
            {
                &quot;custid&quot;: &quot;C25&quot;,
                &quot;name&quot;: &quot;M. Sinclair&quot;
            }
        ],
        &quot;zip&quot;: &quot;02340&quot;
    },
    {
        &quot;avg credit rating&quot;: 695,
        &quot;local customers&quot;: [
            {
                &quot;custid&quot;: &quot;C13&quot;,
                &quot;name&quot;: &quot;T. Cody&quot;
            },
            {
                &quot;custid&quot;: &quot;C31&quot;,
                &quot;name&quot;: &quot;B. Pruitt&quot;
            },
            {
                &quot;custid&quot;: &quot;C41&quot;,
                &quot;name&quot;: &quot;R. Dodge&quot;
            }
        ],
        &quot;zip&quot;: &quot;63101&quot;
    }
]
</pre></div></div>

<p>Note that this query contains two <tt>ORDER BY</tt> clauses: one in the outer query and one in the subquery. These two clauses govern the ordering of the outer-level list of zipcodes and the inner-level lists of customers, respectively. Also note that the group of customers with no zipcode comes first in the output list.</p></div></div></div></div>
<div class="section">
<h2><a name="Selection_and_UNION_ALL"></a><a name="Union_all" id="Union_all">Selection and UNION ALL</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Selection"></a>Selection</h5>
<p><img src="../images/diagrams/Selection.png" alt="" /></p></div>
<div class="section">
<h5><a name="UnionOption"></a>UnionOption</h5>
<p><img src="../images/diagrams/UnionOption.png" alt="" /></p>
<p>In a SQL++ query, two or more query blocks can be connected by the operator <tt>UNION ALL</tt>. The result of a <tt>UNION ALL</tt> between two query blocks contains all the items returned by the first query block, and all the items returned by the second query block. Duplicate items are not eliminated from the query result.</p>
<p>As in SQL, there is no ordering guarantee on the contents of the output stream. However, unlike SQL, the query language does not constrain what the data looks like on the input streams; in particular, it allows heterogeneity on the input and output streams. A type error will be raised if one of the inputs is not a collection.</p>
<p>When two or more query blocks are connected by <tt>UNION ALL</tt>, they can be followed by <tt>ORDER BY</tt>, <tt>LIMIT</tt>, and <tt>OFFSET</tt> clauses that apply to the <tt>UNION</tt> query as a whole. For these clauses to be meaningful, the field-names returned by the two query blocks should match. The following example shows a <tt>UNION ALL</tt> of two query blocks, with an ordering specified for the result.</p>
<p>In this example, a customer might be selected because he has ordered more than two different items (first query block) or because he has a high credit rating (second query block). By adding an explanatory string to each query block, the query writer can cause the output objects to be labeled to distinguish these two cases.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.25a) Find customer ids for customers who have placed orders for more than two different items or who have a credit rating greater than 700, with labels to distinguish these cases.</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
GROUP BY o.orderno, o.custid
HAVING COUNT(*) &gt; 2
SELECT DISTINCT o.custid AS customer_id, &quot;Big order&quot; AS reason

UNION ALL

FROM customers AS c
WHERE rating &gt; 700
SELECT c.custid AS customer_id, &quot;High rating&quot; AS reason
ORDER BY customer_id;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;reason&quot;: &quot;High rating&quot;,
        &quot;customer_id&quot;: &quot;C13&quot;
    },
    {
        &quot;reason&quot;: &quot;Big order&quot;,
        &quot;customer_id&quot;: &quot;C37&quot;
    },
    {
        &quot;reason&quot;: &quot;High rating&quot;,
        &quot;customer_id&quot;: &quot;C37&quot;
    },
    {
        &quot;reason&quot;: &quot;Big order&quot;,
        &quot;customer_id&quot;: &quot;C41&quot;
    }
]
</pre></div></div>

<p>If, on the other hand, you simply want a list of the customer ids and you don&#x2019;t care to preserve the reasons, you can simplify your output by using <tt>SELECT VALUE</tt>, as follows:</p>
<p>(Q3.25b) Simplify Q3.25a to return a simple list of unlabeled customer ids.</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
GROUP BY o.orderno, o.custid
HAVING COUNT(*) &gt; 2
SELECT VALUE o.custid

UNION ALL

FROM customers AS c
WHERE rating &gt; 700
SELECT VALUE c.custid;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    &quot;C37&quot;,
    &quot;C41&quot;,
    &quot;C13&quot;,
    &quot;C37&quot;
]
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="WITH_Clause"></a><a name="With_clauses" id="With_clauses">WITH Clause</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="WithClause"></a>WithClause</h5>
<p><img src="../images/diagrams/WithClause.png" alt="" /></p>
<p>As in standard SQL, a <tt>WITH</tt> clause can be used to improve the modularity of a query. A <tt>WITH</tt> clause often contains a subquery that is needed to compute some result that is used later in the main query. In cases like this, you can think of the <tt>WITH</tt> clause as computing a &#x201c;temporary view&quot; of the input data. The next example uses a <tt>WITH</tt> clause to compute the total revenue of each order in 2020; then the main part of the query finds the minimum, maximum, and average revenue for orders in that year.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.26) Find the minimum, maximum, and average revenue among all orders in 2020, rounded to the nearest integer.</p>

<div>
<div>
<pre class="source">WITH order_revenue AS
    (FROM orders AS o, o.items AS i
    WHERE get_year(date(o.order_date)) = 2020
    GROUP BY o.orderno
    SELECT o.orderno, SUM(i.qty * i.price) AS revenue
  )
FROM order_revenue
SELECT AVG(revenue) AS average,
       MIN(revenue) AS minimum,
       MAX(revenue) AS maximum;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;average&quot;: 4669.99,
        &quot;minimum&quot;: 130.45,
        &quot;maximum&quot;: 18847.58
    }
]
</pre></div></div>

<p><tt>WITH</tt> can be particularly useful when a value needs to be used several times in a query.</p></div></div></div></div>
<div class="section">
<h2><a name="ORDER_BY.2C_LIMIT.2C_and_OFFSET_Clauses"></a><a name="Order_By_clauses" id="Order_By_clauses">ORDER BY, LIMIT, and OFFSET Clauses</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="OrderbyClause"></a>OrderbyClause</h5>
<p><img src="../images/diagrams/OrderbyClause.png" alt="" /></p></div>
<div class="section">
<h5><a name="LimitClause"></a>LimitClause</h5>
<p><img src="../images/diagrams/LimitClause.png" alt="" /></p></div>
<div class="section">
<h5><a name="OffsetClause"></a>OffsetClause</h5>
<p><img src="../images/diagrams/OffsetClause.png" alt="" /></p>
<p>The last three (optional) clauses to be processed in a query are <tt>ORDER BY</tt>, <tt>LIMIT</tt>, and <tt>OFFSET</tt>.</p>
<p>The <tt>ORDER BY</tt> clause is used to globally sort data in either ascending order (i.e., <tt>ASC</tt>) or descending order (i.e., <tt>DESC</tt>). During ordering (if the <tt>NULLS</tt> modifier is not specified), <tt>MISSING</tt> and <tt>NULL</tt> are treated as being smaller than any other value if they are encountered in the ordering key(s). <tt>MISSING</tt> is treated as smaller than <tt>NULL</tt> if both occur in the data being sorted. The <tt>NULLS</tt> modifier determines how <tt>MISSING</tt> and <tt>NULL</tt> are ordered relative to all other values: first (<tt>NULLS</tt> <tt>FIRST</tt>) or last (<tt>NULLS</tt> <tt>LAST</tt>). The relative order between <tt>MISSING</tt> and <tt>NULL</tt> is not affected by the <tt>NULLS</tt> modifier (i.e. <tt>MISSING</tt> is still treated as smaller than <tt>NULL</tt>). The ordering of values of a given type is consistent with its type&#x2019;s <tt>&lt;=</tt> ordering; the ordering of values across types is implementation-defined but stable.</p>
<p>The <tt>LIMIT</tt> clause is used to limit the result set to a specified maximum size. The optional <tt>OFFSET</tt> clause is used to specify a number of items in the output stream to be discarded before the query result begins. The <tt>OFFSET</tt> can also be used as a standalone clause, without the <tt>LIMIT</tt>.</p>
<p>The following example illustrates use of the <tt>ORDER BY</tt> and <tt>LIMIT</tt> clauses.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.27) Return the top three customers by rating.</p>

<div>
<div>
<pre class="source">FROM customers AS c
SELECT c.custid, c.name, c.rating
ORDER BY c.rating DESC
LIMIT 3;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;rating&quot;: 750
    },
    {
        &quot;custid&quot;: &quot;C37&quot;,
        &quot;name&quot;: &quot;T. Henry&quot;,
        &quot;rating&quot;: 750
    },
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;name&quot;: &quot;M. Sinclair&quot;,
        &quot;rating&quot;: 690
    }
]
</pre></div></div>

<p>The following example illustrates the use of <tt>OFFSET</tt>:</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.38) Find the customer with the third-highest credit rating.</p>

<div>
<div>
<pre class="source">FROM customers AS c
SELECT c.custid, c.name, c.rating
ORDER BY c.rating DESC
LIMIT 1 OFFSET 2;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;name&quot;: &quot;M. Sinclair&quot;,
        &quot;rating&quot;: 690
    }
]
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Subqueries" id="Subqueries">Subqueries</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Subquery"></a>Subquery</h5>
<p><img src="../images/diagrams/Subquery.png" alt="" /></p>
<p>A subquery is simply a query surrounded by parentheses. In SQL++, a subquery can appear anywhere that an expression can appear. Like any query, a subquery always returns a collection, even if the collection contains only a single value or is empty. If the subquery has a SELECT clause, it returns a collection of objects. If the subquery has a SELECT VALUE clause, it returns a collection of scalar values. If a single scalar value is expected, the indexing operator [0] can be used to extract the single scalar value from the collection.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.29) (Subquery in SELECT clause) For every order that includes item no. 120, find the order number, customer id, and customer name.</p>
<p>Here, the subquery is used to find a customer name, given a customer id. Since the outer query expects a scalar result, the subquery uses SELECT VALUE and is followed by the indexing operator [0].</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
WHERE i.itemno = 120
SELECT o.orderno, o.custid,
    (FROM customers AS c
     WHERE c.custid = o.custid
     SELECT VALUE c.name)[0] AS name;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1003,
        &quot;custid&quot;: &quot;C31&quot;,
        &quot;name&quot;: &quot;B. Pruitt&quot;
    },
    {
        &quot;orderno&quot;: 1006,
        &quot;custid&quot;: &quot;C41&quot;,
        &quot;name&quot;: &quot;R. Dodge&quot;
    }
]
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.30) (Subquery in WHERE clause) Find the customer number, name, and rating of all customers whose rating is greater than the average rating.</p>
<p>Here, the subquery is used to find the average rating among all customers. Once again, SELECT VALUE and indexing [0] have been used to get a single scalar value.</p>

<div>
<div>
<pre class="source">FROM customers AS c1
WHERE c1.rating &gt;
   (FROM customers AS c2
    SELECT VALUE AVG(c2.rating))[0]
SELECT c1.custid, c1.name, c1.rating;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;rating&quot;: 750
    },
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;name&quot;: &quot;M. Sinclair&quot;,
        &quot;rating&quot;: 690
    },
    {
        &quot;custid&quot;: &quot;C37&quot;,
        &quot;name&quot;: &quot;T. Henry&quot;,
        &quot;rating&quot;: 750
    }
]
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q3.31) (Subquery in FROM clause) Compute the total revenue (sum over items of quantity time price) for each order, then find the average, maximum, and minimum total revenue over all orders.</p>
<p>Here, the FROM clause expects to iterate over a collection of objects, so the subquery uses an ordinary SELECT and does not need to be indexed. You might think of a FROM clause as a &#x201c;natural home&#x201d; for a subquery.</p>

<div>
<div>
<pre class="source">FROM
   (FROM orders AS o, o.items AS i
    GROUP BY o.orderno
    SELECT o.orderno, SUM(i.qty * i.price) AS revenue
   ) AS r
SELECT AVG(r.revenue) AS average,
       MIN(r.revenue) AS minimum,
       MAX(r.revenue) AS maximum;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;average&quot;: 4669.99,
        &quot;minimum&quot;: 130.45,
        &quot;maximum&quot;: 18847.58
    }
]
</pre></div></div>

<p>Note the similarity between Q3.26 and Q3.31. This illustrates how a subquery can often be moved into a <tt>WITH</tt> clause to improve the modularity and readability of a query.</p><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Over_clauses" id="Over_clauses">4. Window Functions</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>Window functions are special functions that compute aggregate values over a &#x201c;window&#x201d; of input data. Like an ordinary function, a window function returns a value for every item in the input dataset. But in the case of a window function, the value returned by the function can depend not only on the argument of the function, but also on other items in the same collection. For example, a window function applied to a set of employees might return the rank of each employee in the set, as measured by salary. As another example, a window function applied to a set of items, ordered by purchase date, might return the running total of the cost of the items.</p>
<p>A window function call is identified by an <tt>OVER</tt> clause, which can specify three things: partitioning, ordering, and framing. The partitioning specification is like a <tt>GROUP BY</tt>: it splits the input data into partitions. For example, a set of employees might be partitioned by department. The window function, when applied to a given object, is influenced only by other objects in the same partition. The ordering specification is like an <tt>ORDER BY</tt>: it determines the ordering of the objects in each partition. The framing specification defines a &#x201c;frame&#x201d; that moves through the partition, defining how the result for each object depends on nearby objects. For example, the frame for a current object might consist of the two objects before and after the current one; or it might consist of all the objects before the current one in the same partition. A window function call may also specify some options that control (for example) how nulls are handled by the function.</p>
<p>Here is an example of a window function call:</p>

<div>
<div>
<pre class="source">SELECT deptno, purchase_date, item, cost,
    SUM(cost) OVER (
        PARTITION BY deptno
        ORDER BY purchase_date
        ROWS UNBOUNDED PRECEDING) AS running_total_cost
FROM purchases
ORDER BY deptno, purchase_date
</pre></div></div>

<p>This example partitions the <tt>purchases</tt> dataset by department number. Within each department, it orders the <tt>purchases</tt> by date and computes a running total cost for each item, using the frame specification <tt>ROWS UNBOUNDED PRECEDING</tt>. Note that the <tt>ORDER BY</tt> clause in the window function is separate and independent from the <tt>ORDER BY</tt> clause of the query as a whole.</p>
<p>The general syntax of a window function call is specified in this section. SQL++ has a set of builtin window functions, which are listed and explained in the <a href="builtins.html#WindowFunctions">Window Functions</a> section of the builtin functions page. In addition, standard SQL aggregate functions such as <tt>SUM</tt> and <tt>AVG</tt> can be used as window functions if they are used with an <tt>OVER</tt> clause.</p></div></div></div></div>
<div class="section">
<h2><a name="Window_Function_Call"></a><a name="Window_function_call" id="Window_function_call">Window Function Call</a></h2>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="WindowFunctionCall"></a>WindowFunctionCall</h5>
<p><img src="../images/diagrams/WindowFunctionCall.png" alt="" /></p></div>
<div class="section">
<h5><a name="WindowFunctionType"></a>WindowFunctionType</h5>
<p><img src="../images/diagrams/WindowFunctionType.png" alt="" /></p>
<p>Refer to the <a href="builtins.html#AggregateFunctions">Aggregate Functions</a> section for a list of aggregate functions.</p>
<p>Refer to the <a href="builtins.html#WindowFunctions">Window Functions</a> section for a list of window functions.</p></div></div></div>
<div class="section">
<h3><a name="Window_Function_Arguments"></a><a name="Window_function_arguments" id="Window_function_arguments">Window Function Arguments</a></h3>
<div class="section">
<div class="section">
<h5><a name="WindowFunctionArguments"></a>WindowFunctionArguments</h5>
<p><img src="../images/diagrams/WindowFunctionArguments.png" alt="" /></p>
<p>Refer to the <a href="builtins.html#AggregateFunctions">Aggregate Functions</a> section or the <a href="builtins.html#WindowFunctions">Window Functions</a> section for details of the arguments for individual functions.</p></div></div></div>
<div class="section">
<h3><a name="Window_Function_Options"></a><a name="Window_function_options" id="Window_function_options">Window Function Options</a></h3>
<div class="section">
<div class="section">
<h5><a name="WindowFunctionOptions"></a>WindowFunctionOptions</h5>
<p><img src="../images/diagrams/WindowFunctionOptions.png" alt="" /></p>
<p>Window function options cannot be used with <a href="builtins.html#AggregateFunctions">aggregate functions</a>.</p>
<p>Window function options can only be used with some <a href="builtins.html#WindowFunctions">window functions</a>, as described below.</p>
<p>The <i>FROM modifier</i> determines whether the computation begins at the first or last tuple in the window. It is optional and can only be used with the <tt>nth_value()</tt> function. If it is omitted, the default setting is <tt>FROM FIRST</tt>.</p>
<p>The <i>NULLS modifier</i> determines whether NULL values are included in the computation, or ignored. MISSING values are treated the same way as NULL values. It is also optional and can only be used with the <tt>first_value()</tt>, <tt>last_value()</tt>, <tt>nth_value()</tt>, <tt>lag()</tt>, and <tt>lead()</tt> functions. If omitted, the default setting is <tt>RESPECT NULLS</tt>.</p></div></div></div>
<div class="section">
<h3><a name="Window_Frame_Variable"></a><a name="Window_frame_variable" id="Window_frame_variable">Window Frame Variable</a></h3>
<p>The <tt>AS</tt> keyword enables you to specify an alias for the window frame contents. It introduces a variable which will be bound to the contents of the frame. When using a built-in <a href="builtins.html#AggregateFunctions">aggregate function</a> as a window function, the function&#x2019;s argument must be a subquery which refers to this alias, for example:</p>

<div>
<div>
<pre class="source">SELECT ARRAY_COUNT(DISTINCT (FROM alias SELECT VALUE alias.src.field))
OVER alias AS (PARTITION BY &#x2026; ORDER BY &#x2026;)
FROM source AS src
</pre></div></div>

<p>The alias is not necessary when using a <a href="builtins.html#WindowFunctions">window function</a>, or when using a standard SQL aggregate function with the <tt>OVER</tt> clause.</p></div>
<div class="section">
<h3><a name="Window_Definition"></a><a name="Window_definition" id="Window_definition">Window Definition</a></h3>
<div class="section">
<div class="section">
<h5><a name="WindowDefinition"></a>WindowDefinition</h5>
<p><img src="../images/diagrams/WindowDefinition.png" alt="" /></p>
<p>The <i>window definition</i> specifies the partitioning, ordering, and framing for window functions.</p></div></div>
<div class="section">
<h4><a name="Window_Partition_Clause"></a><a name="Window_partition_clause" id="Window_partition_clause">Window Partition Clause</a></h4>
<div class="section">
<h5><a name="WindowPartitionClause"></a>WindowPartitionClause</h5>
<p><img src="../images/diagrams/WindowPartitionClause.png" alt="" /></p>
<p>The <i>window partition clause</i> divides the tuples into logical partitions using one or more expressions.</p>
<p>This clause may be used with any <a href="builtins.html#WindowFunctions">window function</a>, or any <a href="builtins.html#AggregateFunctions">aggregate function</a> used as a window function.</p>
<p>This clause is optional. If omitted, all tuples are united in a single partition.</p></div></div>
<div class="section">
<h4><a name="Window_Order_Clause"></a><a name="Window_order_clause" id="Window_order_clause">Window Order Clause</a></h4>
<div class="section">
<h5><a name="WindowOrderClause"></a>WindowOrderClause</h5>
<p><img src="../images/diagrams/WindowOrderClause.png" alt="" /></p>
<p>The <i>window order clause</i> determines how tuples are ordered within each partition. The window function works on tuples in the order specified by this clause.</p>
<p>This clause may be used with any <a href="builtins.html#WindowFunctions">window function</a>, or any <a href="builtins.html#AggregateFunctions">aggregate function</a> used as a window function.</p>
<p>This clause is optional. If omitted, all tuples are considered peers, i.e. their order is tied. When tuples in the window partition are tied, each window function behaves differently.</p>
<ul>

<li>

<p>The <tt>row_number()</tt> function returns a distinct number for each tuple. If tuples are tied, the results may be unpredictable.</p>
</li>
<li>

<p>The <tt>rank()</tt>, <tt>dense_rank()</tt>, <tt>percent_rank()</tt>, and <tt>cume_dist()</tt> functions return the same result for each tuple.</p>
</li>
<li>

<p>For other functions, if the <a href="#Window_frame_clause">window frame</a> is defined by <tt>ROWS</tt>, the results may be unpredictable. If the window frame is defined by <tt>RANGE</tt> or <tt>GROUPS</tt>, the results are same for each tuple.</p>
</li>
</ul>
<p><b>Note:</b> This clause does not guarantee the overall order of the query results. To guarantee the order of the final results, use the query <tt>ORDER BY</tt> clause.</p></div></div>
<div class="section">
<h4><a name="Window_Frame_Clause"></a><a name="Window_frame_clause" id="Window_frame_clause">Window Frame Clause</a></h4>
<div class="section">
<h5><a name="WindowFrameClause"></a>WindowFrameClause</h5>
<p><img src="../images/diagrams/WindowFrameClause.png" alt="" /></p>
<p>The <i>window frame clause</i> defines the window frame. It can be used with all <a href="builtins.html#AggregateFunctions">aggregate functions</a> and some <a href="builtins.html#WindowFunctions">window functions</a> &#x2014; refer to the descriptions of individual functions for more details.  It is optional and allowed only when the <a href="#Window_order_clause">window order clause</a> is present.</p>
<ul>

<li>

<p>If this clause is omitted and there is no <a href="#Window_order_clause">window order clause</a>, the window frame is the entire partition.</p>
</li>
<li>

<p>If this clause is omitted but there is a <a href="#Window_order_clause">window order clause</a>, the window frame becomes all tuples in the partition preceding the current tuple and its peers &#x2014; the same as <tt>RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW</tt>.</p>
</li>
</ul>
<p>The window frame can be defined in the following ways:</p>
<ul>

<li>

<p><tt>ROWS</tt>: Counts the exact number of tuples within the frame. If window ordering doesn&#x2019;t result in unique ordering, the function may produce unpredictable results. You can add a unique expression or more window ordering expressions to produce unique ordering.</p>
</li>
<li>

<p><tt>RANGE</tt>: Looks for a value offset within the frame. The function produces deterministic results.</p>
</li>
<li>

<p><tt>GROUPS</tt>: Counts all groups of tied rows within the frame. The function produces deterministic results.</p>
</li>
</ul>
<p><b>Note:</b> If this clause uses <tt>RANGE</tt> with either <i>Expr</i> <tt>PRECEDING</tt> or <i>Expr</i> <tt>FOLLOWING</tt>, the <a href="#Window_order_clause">window order clause</a> must have only a single ordering term. The ordering term expression must evaluate to a number. If these conditions are not met, the window frame will be empty, which means the window function will return its default value: in most cases this is <tt>null</tt>, except for <tt>strict_count()</tt> or <tt>array_count()</tt>, whose default value is 0. This restriction does not apply when the window frame uses <tt>ROWS</tt> or <tt>GROUPS</tt>.</p>
<p><b>Tip:</b> The <tt>RANGE</tt> window frame is commonly used to define window frames based on date or time. If you want to use <tt>RANGE</tt> with either <i>Expr</i> <tt>PRECEDING</tt> or <i>Expr</i> <tt>FOLLOWING</tt>, and you want to use an ordering expression based on date or time, the expression in <i>Expr</i> <tt>PRECEDING</tt> or <i>Expr</i> <tt>FOLLOWING</tt> must use a data type that can be added to the ordering expression.</p></div></div>
<div class="section">
<h4><a name="Window_Frame_Extent"></a><a name="Window_frame_extent" id="Window_frame_extent">Window Frame Extent</a></h4>
<div class="section">
<h5><a name="WindowFrameExtent"></a>WindowFrameExtent</h5>
<p><img src="../images/diagrams/WindowFrameExtent.png" alt="" /></p>
<p>The <i>window frame extent clause</i> specifies the start point and end point of the window frame. The expression before <tt>AND</tt> is the start point and the expression after <tt>AND</tt> is the end point. If <tt>BETWEEN</tt> is omitted, you can only specify the start point; the end point becomes <tt>CURRENT ROW</tt>.</p>
<p>The window frame end point can&#x2019;t be before the start point. If this clause violates this restriction explicitly, an error will result. If it violates this restriction implicitly, the window frame will be empty, which means the window function will return its default value: in most cases this is <tt>null</tt>, except for <tt>strict_count()</tt> or <tt>array_count()</tt>, whose default value is 0.</p>
<p>Window frame extents that result in an explicit violation are:</p>
<ul>

<li>

<p><tt>BETWEEN CURRENT ROW AND</tt> <i>Expr</i> <tt>PRECEDING</tt></p>
</li>
<li>

<p><tt>BETWEEN</tt> <i>Expr</i> <tt>FOLLOWING AND</tt> <i>Expr</i> <tt>PRECEDING</tt></p>
</li>
<li>

<p><tt>BETWEEN</tt> <i>Expr</i> <tt>FOLLOWING AND CURRENT ROW</tt></p>
</li>
</ul>
<p>Window frame extents that result in an implicit violation are:</p>
<ul>

<li>

<p><tt>BETWEEN UNBOUNDED PRECEDING AND</tt> <i>Expr</i> <tt>PRECEDING</tt> &#x2014; if <i>Expr</i> is too high, some tuples may generate an empty window frame.</p>
</li>
<li>

<p><tt>BETWEEN</tt> <i>Expr</i> <tt>PRECEDING AND</tt> <i>Expr</i> <tt>PRECEDING</tt> &#x2014; if the second  <i>Expr</i> is greater than or equal to the first <i>Expr</i>, all result sets will generate an empty window frame.</p>
</li>
<li>

<p><tt>BETWEEN</tt> <i>Expr</i> <tt>FOLLOWING AND</tt> <i>Expr</i> <tt>FOLLOWING</tt> &#x2014; if the first <i>Expr</i> is greater than or equal to the second <i>Expr</i>, all result sets will generate an empty window frame.</p>
</li>
<li>

<p><tt>BETWEEN</tt> <i>Expr</i> <tt>FOLLOWING AND UNBOUNDED FOLLOWING</tt> &#x2014; if <i>Expr</i> is too high, some tuples may generate an empty window frame.</p>
</li>
<li>

<p>If the <a href="#Window_frame_exclusion">window frame exclusion clause</a> is present, any window frame specification may result in empty window frame.</p>
</li>
</ul>
<p>The <i>Expr</i> must be a positive constant or an expression that evaluates as a positive number. For <tt>ROWS</tt> or <tt>GROUPS</tt>, the <i>Expr</i> must be an integer.</p></div></div>
<div class="section">
<h4><a name="Window_Frame_Exclusion"></a><a name="Window_frame_exclusion" id="Window_frame_exclusion">Window Frame Exclusion</a></h4>
<div class="section">
<h5><a name="WindowFrameExclusion"></a>WindowFrameExclusion</h5>
<p><img src="../images/diagrams/WindowFrameExclusion.png" alt="" /></p>
<p>The <i>window frame exclusion clause</i> enables you to exclude specified tuples from the window frame.</p>
<p>This clause can be used with all <a href="builtins.html#AggregateFunctions">aggregate functions</a> and some <a href="builtins.html#WindowFunctions">window functions</a> &#x2014; refer to the descriptions of individual functions for more details.</p>
<p>This clause is allowed only when the <a href="#Window_frame_clause">window frame clause</a> is present.</p>
<p>This clause is optional. If this clause is omitted, the default is no exclusion &#x2014; the same as <tt>EXCLUDE NO OTHERS</tt>.</p>
<ul>

<li>

<p><tt>EXCLUDE CURRENT ROW</tt>: If the current tuple is still part of the window frame, it is removed from the window frame.</p>
</li>
<li>

<p><tt>EXCLUDE GROUP</tt>: The current tuple and any peers of the current tuple are removed from the window frame.</p>
</li>
<li>

<p><tt>EXCLUDE TIES</tt>: Any peers of the current tuple, but not the current tuple itself, are removed from the window frame.</p>
</li>
<li>

<p><tt>EXCLUDE NO OTHERS</tt>: No additional tuples are removed from the window frame.</p>
</li>
</ul>
<p>If the current tuple is already removed from the window frame, then it remains removed from the window frame.</p><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Errors" id="Errors">5. Errors</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>A query can potentially result in one of the following errors:</p>
<ul>

<li>syntax error,</li>
<li>identifier resolution error,</li>
<li>type error,</li>
<li>resource error.</li>
</ul>
<p>If the query processor runs into any error, it will terminate the ongoing processing of the query and immediately return an error message to the client.</p></div></div></div></div>
<div class="section">
<h2><a name="Syntax_Errors"></a><a name="Syntax_errors" id="Syntax_errors">Syntax Errors</a></h2>
<p>A valid query must satisfy the grammar rules of the query language. Otherwise, a syntax error will be raised.</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q4.1)</p>

<div>
<div>
<pre class="source">customers AS c
SELECT *
</pre></div></div>

<p>Since the queryhas no <tt>FROM</tt> keyword before the dataset <tt>customers</tt>, we will get a syntax error as follows:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX1001: Syntax error: In line 2 &gt;&gt;customers AS c&lt;&lt; Encountered \&quot;AS\&quot; at column 11. &quot;
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q4.2)</p>

<div>
<div>
<pre class="source"> FROM customers AS c
 WHERE type=&quot;advertiser&quot;
 SELECT *;
</pre></div></div>

<p>Since &#x201c;type&#x201d; is a reserved keyword in the query parser, we will get a syntax error as follows:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX1001: Syntax error: In line 3 &gt;&gt; WHERE type=\&quot;advertiser\&quot;&lt;&lt; Encountered \&quot;type\&quot; at column 8. &quot;;
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Identifier_Resolution_Errors"></a><a name="Identifier_resolution_errors" id="Identifier_resolution_errors">Identifier Resolution Errors</a></h2>
<p>Referring to an undefined identifier can cause an error if the identifier cannot be successfully resolved as a valid field access.</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q4.3)</p>

<div>
<div>
<pre class="source"> FROM customer AS c
 SELECT *
</pre></div></div>

<p>If we have a typo as above in &#x201c;customers&#x201d; that misses the dataset name&#x2019;s ending &#x201c;s&#x201d;, we will get an identifier resolution error as follows:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX1077: Cannot find dataset customer in dataverse Commerce nor an alias with name customer (in line 2, at column 7)&quot;
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q4.4)</p>

<div>
<div>
<pre class="source"> FROM customers AS c JOIN orders AS o ON c.custid = o.custid
 SELECT name, orderno;
</pre></div></div>

<p>If the compiler cannot figure out how to resolve an unqualified field name, which will occur if there is more than one variable in scope (e.g., <tt>customers AS c</tt> and <tt>orders AS o</tt> as above), we will get an identifier resolution error as follows:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX1074: Cannot resolve ambiguous alias reference for identifier name (in line 3, at column 9)&quot;
</pre></div></div>

<p>The same can happen when failing to properly identify the <tt>GROUP BY</tt> expression.</p>
<p>(Q4.5)</p>

<div>
<div>
<pre class="source">SELECT o.custid, COUNT(o.orderno) AS `order count`
FROM orders AS o
GROUP BY custid;
</pre></div></div>

<p>Result:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX1073: Cannot resolve alias reference for undefined identifier o (in line 2, at column 8)&quot;
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Type_Errors"></a><a name="Type_errors" id="Type_errors">Type Errors</a></h2>
<p>The query compiler does type checks based on its available type information. In addition, the query runtime also reports type errors if a data model instance it processes does not satisfy the type requirement.</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>
<p>(Q4.6)</p>

<div>
<div>
<pre class="source">get_day(10/11/2020);
</pre></div></div>

<p>Since function <tt>get_day</tt> can only process duration, daytimeduration, date, or datetime input values, we will get a type error as follows:</p>

<div>
<div>
<pre class="source">ERROR: Code: 1 &quot;ASX0002: Type mismatch: function get-day expects its 1st input parameter to be of type duration, daytimeduration, date or datetime, but the actual input type is double (in line 2, at column 1)&quot;
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Resource_Errors"></a><a name="Resource_errors" id="Resource_errors">Resource Errors</a></h2>
<p>A query can potentially exhaust system resources, such as the number of open files and disk spaces. For instance, the following two resource errors could be potentially be seen when running the system:</p>

<div>
<div>
<pre class="source">Error: no space left on device
Error: too many open files
</pre></div></div>

<p>The &#x201c;no space left on device&#x201d; issue usually can be fixed by cleaning up disk space and reserving more disk space for the system. The &#x201c;too many open files&#x201d; issue usually can be fixed by a system administrator, following the instructions <a class="externalLink" href="https://easyengine.io/tutorials/linux/increase-open-files-limit/">here</a>.</p><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Vs_SQL-92" id="Vs_SQL-92">6. Differences from SQL-92</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>SQL++ offers the following additional features beyond SQL-92:</p>
<ul>

<li>Fully composable and functional: A subquery can iterate over any intermediate collection and can appear anywhere in a query.</li>
<li>Schema-free: The query language does not assume the existence of a static schema for any data that it processes.</li>
<li>Correlated <tt>FROM</tt> terms: A right-side <tt>FROM</tt> term expression can refer to variables defined by <tt>FROM</tt> terms on its left.</li>
<li>Powerful <tt>GROUP BY</tt>: In addition to a set of aggregate functions as in standard SQL, the groups created by the <tt>GROUP BY</tt> clause are directly usable in nested queries and/or to obtain nested results.</li>
<li>Generalized <tt>SELECT</tt> clause: A <tt>SELECT</tt> clause can return any type of collection, while in SQL-92, a <tt>SELECT</tt> clause has to return a (homogeneous) collection of objects.</li>
</ul>
<p>The following matrix is a quick &#x201c;SQL-92 compatibility cheat sheet&#x201d; for SQL++.</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th> Feature </th>
<th>  SQL++ </th>
<th> SQL-92 </th>
<th>  Why different?  </th></tr>
</thead><tbody>

<tr class="b">
<td> SELECT * </td>
<td> Returns nested objects </td>
<td> Returns flattened concatenated objects </td>
<td> Nested collections are 1st class citizens </td></tr>
<tr class="a">
<td> SELECT list </td>
<td> order not preserved </td>
<td> order preserved </td>
<td> Fields in a JSON object are not ordered </td></tr>
<tr class="b">
<td> Subquery </td>
<td> Returns a collection  </td>
<td> The returned collection is cast into a scalar value if the subquery appears in a SELECT list or on one side of a comparison or as input to a function </td>
<td> Nested collections are 1st class citizens </td></tr>
<tr class="a">
<td> LEFT OUTER JOIN </td>
<td>  Fills in <tt>MISSING</tt>(s) for non-matches  </td>
<td>   Fills in <tt>NULL</tt>(s) for non-matches    </td>
<td> &#x201c;Absence&#x201d; is more appropriate than &#x201c;unknown&#x201d; here  </td></tr>
<tr class="b">
<td> UNION ALL       </td>
<td> Allows heterogeneous inputs and output </td>
<td> Input streams must be UNION-compatible and output field names are drawn from the first input stream </td>
<td> Heterogenity and nested collections are common </td></tr>
<tr class="a">
<td> IN constant_expr </td>
<td> The constant expression has to be an array or multiset, i.e., [..,..,&#x2026;] </td>
<td> The constant collection can be represented as comma-separated items in a paren pair </td>
<td> Nested collections are 1st class citizens </td></tr>
<tr class="b">
<td> String literal </td>
<td> Double quotes or single quotes </td>
<td> Single quotes only </td>
<td> Double quoted strings are pervasive in JSON</td></tr>
<tr class="a">
<td> Delimited identifiers </td>
<td> Backticks </td>
<td> Double quotes </td>
<td> Double quoted strings are pervasive in JSON </td></tr>
</tbody>
</table>
<p>The following SQL-92 features are not implemented yet. However, SQL++ does not conflict with these features:</p>
<ul>

<li>CROSS JOIN, NATURAL JOIN, UNION JOIN</li>
<li>FULL OUTER JOIN</li>
<li>INTERSECT, EXCEPT, UNION with set semantics</li>
<li>CAST expression</li>
<li>ALL and SOME predicates for linking to subqueries</li>
<li>UNIQUE predicate (tests a collection for duplicates)</li>
<li>MATCH predicate (tests for referential integrity)</li>
<li>Row and Table constructors</li>
<li>Preserved order for expressions in a SELECT list</li>
</ul><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="DDL_and_DML_statements" id="DDL_and_DML_statements">7. DDL and DML statements</a></h1>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Stmnt"></a>Stmnt</h5>
<p><img src="../images/diagrams/Stmnt.png" alt="" /></p></div>
<div class="section">
<h5><a name="SingleStmnt"></a>SingleStmnt</h5>
<p><img src="../images/diagrams/SingleStmnt.png" alt="" /></p>
<p>In addition to queries, an implementation of SQL++ needs to support statements for data definition and manipulation purposes as well as controlling the context to be used in evaluating query expressions. This section details the DDL and DML statements supported in SQL++ as realized today in Apache AsterixDB.</p><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Lifecycle_Management_Statements"></a><a name="Lifecycle_management_statements" id="Lifecycle_management_statements">Lifecycle Management Statements</a></h2>
<div class="section">
<h3><a name="Use_Statement"></a><a name="Use" id="Use">Use Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="UseStmnt"></a>UseStmnt</h5>
<p><img src="../images/diagrams/UseStmnt.png" alt="" /></p></div>
<div class="section">
<h5><a name="DataverseName"></a>DataverseName</h5>
<p><img src="../images/diagrams/DataverseName.png" alt="" /></p>
<p>At the uppermost level, the world of data is organized into data namespaces called <b>dataverses</b>. To set the default dataverse for statements, the <tt>USE</tt> statement is provided.</p>
<p>As an example, the following statement sets the default dataverse to be <tt>Commerce</tt>.</p>

<div>
<div>
<pre class="source">USE Commerce;
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Set_Statement"></a><a name="Sets" id="Sets"> Set Statement</a></h3>
<p>The <tt>SET</tt> statement can be used to override certain configuration parameters. More information about <tt>SET</tt> can be found in <a href="#Performance_tuning">Appendix 2</a>.</p></div>
<div class="section">
<h3><a name="Function_Declaration"></a><a name="Functions" id="Functions"> Function Declaration</a></h3>
<p>When writing a complex query, it can sometimes be helpful to define one or more auxiliary functions that each address a sub-piece of the overall query.</p>
<p>The <tt>DECLARE FUNCTION</tt> statement supports the creation of such helper functions. In general, the function body (expression) can be any legal query expression.</p>
<p>The function named in the <tt>DECLARE FUNCTION</tt> statement is accessible only in the current query. To create a persistent function for use in multiple queries, use the <tt>CREATE FUNCTION</tt> statement.</p>
<div class="section">
<div class="section">
<h5><a name="FunctionDeclaration"></a>FunctionDeclaration</h5>
<p><img src="../images/diagrams/FunctionDeclaration.png" alt="" /></p>
<p>The following is a simple example of a temporary function definition and its use.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">DECLARE FUNCTION nameSearch(customerId){
    (SELECT c.custid, c.name
    FROM customers AS c
    WHERE c.custid = customerId)[0]
 };


SELECT VALUE nameSearch(&quot;C25&quot;);
</pre></div></div>

<p>For our sample data set, this returns:</p>

<div>
<div>
<pre class="source">[
  { &quot;custid&quot;: &quot;C25&quot;, &quot;name&quot;: &quot;M. Sinclair&quot; }
]
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Create_Statement"></a><a name="Create" id="Create"> Create Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="CreateStmnt"></a>CreateStmnt</h5>
<p><img src="../images/diagrams/CreateStmnt.png" alt="" /></p></div>
<div class="section">
<h5><a name="DataverseName"></a>DataverseName</h5>
<p><img src="../images/diagrams/DataverseName.png" alt="" /></p></div>
<div class="section">
<h5><a name="QualifiedName"></a>QualifiedName</h5>
<p><img src="../images/diagrams/QualifiedName.png" alt="" /></p></div>
<div class="section">
<h5><a name="DoubleQualifiedName"></a>DoubleQualifiedName</h5>
<p><img src="../images/diagrams/DoubleQualifiedName.png" alt="" /></p>
<p>The <tt>CREATE</tt> statement is used for creating dataverses as well as other persistent artifacts in a dataverse. It can be used to create new dataverses, datatypes, datasets, indexes, and user-defined query functions.</p></div></div>
<div class="section">
<h4><a name="Create_Dataverse"></a><a name="Dataverses" id="Dataverses"> Create Dataverse</a></h4>
<div class="section">
<h5><a name="CreateDataverse"></a>CreateDataverse</h5>
<p><img src="../images/diagrams/CreateDataverse.png" alt="" /></p>
<p>The <tt>CREATE DATAVERSE</tt> statement is used to create new dataverses. To ease the authoring of reusable query scripts, an optional <tt>IF NOT EXISTS</tt> clause is included to allow creation to be requested either unconditionally or only if the dataverse does not already exist. If this clause is absent, an error is returned if a dataverse with the indicated name already exists.</p>
<p>The following example creates a new dataverse named <tt>Commerce</tt> if one does not already exist.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE DATAVERSE Commerce IF NOT EXISTS;
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="Create_Type"></a><a name="Types" id="Types"> Create Type </a></h4>
<div class="section">
<h5><a name="CreateType"></a>CreateType</h5>
<p><img src="../images/diagrams/CreateType.png" alt="" /></p></div>
<div class="section">
<h5><a name="ObjectTypeDef"></a>ObjectTypeDef</h5>
<p><img src="../images/diagrams/ObjectTypeDef.png" alt="" /></p></div>
<div class="section">
<h5><a name="ObjectField"></a>ObjectField</h5>
<p><img src="../images/diagrams/ObjectField.png" alt="" /></p></div>
<div class="section">
<h5><a name="TypeExpr"></a>TypeExpr</h5>
<p><img src="../images/diagrams/TypeExpr.png" alt="" /></p></div>
<div class="section">
<h5><a name="ArrayTypeDef"></a>ArrayTypeDef</h5>
<p><img src="../images/diagrams/ArrayTypeDef.png" alt="" /></p></div>
<div class="section">
<h5><a name="MultisetTypeDef"></a>MultisetTypeDef</h5>
<p><img src="../images/diagrams/MultisetTypeDef.png" alt="" /></p></div>
<div class="section">
<h5><a name="TypeReference"></a>TypeReference</h5>
<p><img src="../images/diagrams/TypeReference.png" alt="" /></p>
<p>The <tt>CREATE TYPE</tt> statement is used to create a new named datatype. This type can then be used to create stored collections or utilized when defining one or more other datatypes. Much more information about the data model is available in the <a href="../datamodel.html">data model reference guide</a>. A new type can be a object type, a renaming of another type, an array type, or a multiset type. A object type can be defined as being either open or closed. Instances of a closed object type are not permitted to contain fields other than those specified in the create type statement. Instances of an open object type may carry additional fields, and open is the default for new types if neither option is specified.</p>
<p>The following example creates three new object types called <tt>addressType</tt>, <tt>customerType</tt>, and <tt>itemType</tt>. Their fields are essentially traditional typed name/value pairs (much like SQL fields). Since it is defined as (defaulting to) being an open type, instances will be permitted to contain more than what is specified in the type definition. Indeed many of the customer objects contain a rating as well, however this is not necessary for the customer object to be created. As can be seen in the sample data, customers can exist without ratings or with part (or all) of the address missing.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE TYPE addressType AS {
    street:                     string,
    city:                       string,
    zipcode:                    string?
};

CREATE TYPE customerType AS {
    custid:                     string,
    name:                       string,
    address:                    addressType?
};

CREATE TYPE itemType AS {
    itemno:                     int,
    qty:                        int,
    price:                      int
};
</pre></div></div>

<p>Optionally, you may wish to create a type that has an automatically generated primary key field. The example below shows an alternate form of <tt>itemType</tt> which achieves this by setting its primary key, <tt>itemno</tt>, to UUID. (Refer to the Datasets section later for more details on such fields.)</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE TYPE itemType AS {
    itemno:                     uuid,
    qty:                        int,
    price:                      int
};
</pre></div></div>

<p>Note that the type of the <tt>itemno</tt> in this example is UUID. This field type can be used if you want to have an autogenerated-PK field. (Refer to the Datasets section later for more details on such fields.)</p>
<p>The next example creates a new object type, closed this time, called <tt>orderType</tt>. Instances of this closed type will not be permitted to have extra fields, although the <tt>ship_date</tt> field is marked as optional and may thus be <tt>NULL</tt> or <tt>MISSING</tt> in legal instances of the type. The items field is an array of instances of another object type, <tt>itemType</tt>.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE TYPE orderType AS CLOSED {
    orderno:                    int,
    custid:                     string,
    order_date:                 string,
    ship_date:                  string?,
    items:                      [ itemType ]
};
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="Create_Dataset"></a><a name="Datasets" id="Datasets"> Create Dataset</a></h4>
<div class="section">
<h5><a name="CreateDataset"></a>CreateDataset</h5>
<p><img src="../images/diagrams/CreateDataset.png" alt="" /></p></div>
<div class="section">
<h5><a name="CreateInternalDataset"></a>CreateInternalDataset</h5>
<p><img src="../images/diagrams/CreateInternalDataset.png" alt="" /></p></div>
<div class="section">
<h5><a name="CreateExternalDataset"></a>CreateExternalDataset</h5>
<p><img src="../images/diagrams/CreateExternalDataset.png" alt="" /></p></div>
<div class="section">
<h5><a name="DatasetTypeDef"></a>DatasetTypeDef</h5>
<p><img src="../images/diagrams/DatasetTypeDef.png" alt="" /></p></div>
<div class="section">
<h5><a name="DatasetFieldDef"></a>DatasetFieldDef</h5>
<p><img src="../images/diagrams/DatasetFieldDef.png" alt="" /></p></div>
<div class="section">
<h5><a name="TypeReference"></a>TypeReference</h5>
<p><img src="../images/diagrams/TypeReference.png" alt="" /></p></div>
<div class="section">
<h5><a name="PrimaryKey"></a>PrimaryKey</h5>
<p><img src="../images/diagrams/PrimaryKey.png" alt="" /></p></div>
<div class="section">
<h5><a name="NestedField"></a>NestedField</h5>
<p><img src="../images/diagrams/NestedField.png" alt="" /></p></div>
<div class="section">
<h5><a name="AdapterName"></a>AdapterName</h5>
<p><img src="../images/diagrams/AdapterName.png" alt="" /></p></div>
<div class="section">
<h5><a name="Configuration"></a>Configuration</h5>
<p><img src="../images/diagrams/Configuration.png" alt="" /></p></div>
<div class="section">
<h5><a name="KeyValuePair"></a>KeyValuePair</h5>
<p><img src="../images/diagrams/KeyValuePair.png" alt="" /></p></div>
<div class="section">
<h5><a name="Properties"></a>Properties</h5>
<p><img src="../images/diagrams/Properties.png" alt="" /></p>
<p>The <tt>CREATE DATASET</tt> statement is used to create a new dataset. Datasets are named, multisets of object type instances; they are where data lives persistently and are the usual targets for queries. Datasets are typed, and the system ensures that their contents conform to their type definitions. An Internal dataset (the default kind) is a dataset whose content lives within and is managed by the system. It is required to have a specified unique primary key field which uniquely identifies the contained objects. (The primary key is also used in secondary indexes to identify the indexed primary data objects.)</p>
<p>Internal datasets contain several advanced options that can be specified when appropriate. One such option is that random primary key (UUID) values can be auto-generated by declaring the field to be UUID and putting <tt>AUTOGENERATED</tt> after the <tt>PRIMARY KEY</tt> identifier. In this case, unlike other non-optional fields, a value for the auto-generated PK field should not be provided at insertion time by the user since each object&#x2019;s primary key field value will be auto-generated by the system.</p>
<p>Another advanced option, when creating an Internal dataset, is to specify the merge policy to control which of the underlying LSM storage components to be merged. (The system supports Log-Structured Merge tree based physical storage for Internal datasets.) Currently the system supports four different component merging policies that can be chosen per dataset: no-merge, constant, prefix, and correlated-prefix. The no-merge policy simply never merges disk components. The constant policy merges disk components when the number of components reaches a constant number k that can be configured by the user. The prefix policy relies on both component sizes and the number of components to decide which components to merge. It works by first trying to identify the smallest ordered (oldest to newest) sequence of components such that the sequence does not contain a single component that exceeds some threshold size M and that either the sum of the component&#x2019;s sizes exceeds M or the number of components in the sequence exceeds another threshold C. If such a sequence exists, the components in the sequence are merged together to form a single component. Finally, the correlated-prefix policy is similar to the prefix policy, but it delegates the decision of merging the disk components of all the indexes in a dataset to the primary index. When the correlated-prefix policy decides that the primary index needs to be merged (using the same decision criteria as for the prefix policy), then it will issue successive merge requests on behalf of all other indexes associated with the same dataset. The system&#x2019;s default policy is the prefix policy except when there is a filter on a dataset, where the preferred policy for filters is the correlated-prefix.</p>
<p>Another advanced option shown in the syntax above, related to performance and mentioned above, is that a <b>filter</b> can optionally be created on a field to further optimize range queries with predicates on the filter&#x2019;s field. Filters allow some range queries to avoid searching all LSM components when the query conditions match the filter. (Refer to <a href="../sqlpp/filters.html">Filter-Based LSM Index Acceleration</a> for more information about filters.)</p>
<p>An External dataset, in contrast to an Internal dataset, has data stored outside of the system&#x2019;s control. Files living in HDFS or in the local filesystem(s) of a cluster&#x2019;s nodes are currently supported. External dataset support allows queries to treat foreign data as though it were stored in the system, making it possible to query &#x201c;legacy&#x201d; file data (for example, Hive data) without having to physically import it. When defining an External dataset, an appropriate adapter type must be selected for the desired external data. (See the <a href="../aql/externaldata.html">Guide to External Data</a> for more information on the available adapters.)</p>
<p>The following example creates an Internal dataset for storing <tt>customerType</tt> objects. It specifies that their <tt>custid</tt> field is their primary key.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INTERNAL DATASET customers(customerType) PRIMARY KEY custid;
</pre></div></div>

<p>The next example creates an Internal dataset (the default kind when no dataset kind is specified) for storing <tt>itemType</tt> objects might look like. It specifies that the <tt>itemno</tt> field should be used as the primary key for the dataset. It also specifies that the <tt>itemno</tt> field is an auto-generated field, meaning that a randomly generated UUID value should be assigned to each incoming object by the system. (A user should therefore not attempt to provide a value for this field.)</p>
<p>Note that the <tt>itemno</tt> field&#x2019;s declared type must be UUID in this case.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE DATASET MyItems(itemType) PRIMARY KEY itemno AUTOGENERATED;
</pre></div></div>

<p>Alternatively the dataset object type can be specified using inline type definition syntax.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE DATASET MyItems(itemno INT NOT UNKNOWN, qty INT NOT UNKNOWN, price INT NOT UNKNOWN) PRIMARY KEY itemno AUTOGENERATED;
</pre></div></div>

<p>The next example creates an External dataset for querying LineItemType objects. The choice of the <tt>hdfs</tt> adapter means that this dataset&#x2019;s data actually resides in HDFS. The example <tt>CREATE</tt> statement also provides parameters used by the hdfs adapter: the URL and path needed to locate the data in HDFS and a description of the data format.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE EXTERNAL DATASET LineItem(LineItemType) USING hdfs (
  (&quot;hdfs&quot;=&quot;hdfs://HOST:PORT&quot;),
  (&quot;path&quot;=&quot;HDFS_PATH&quot;),
  (&quot;input-format&quot;=&quot;text-input-format&quot;),
  (&quot;format&quot;=&quot;delimited-text&quot;),
  (&quot;delimiter&quot;=&quot;|&quot;));
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="Create_Index"></a><a name="Indices" id="Indices">Create Index</a></h4>
<div class="section">
<h5><a name="CreateIndex"></a>CreateIndex</h5>
<p><img src="../images/diagrams/CreateIndex.png" alt="" /></p></div>
<div class="section">
<h5><a name="CreateSecondaryIndex"></a>CreateSecondaryIndex</h5>
<p><img src="../images/diagrams/CreateSecondaryIndex.png" alt="" /></p></div>
<div class="section">
<h5><a name="CreatePrimaryKeyIndex"></a>CreatePrimaryKeyIndex</h5>
<p><img src="../images/diagrams/CreatePrimaryKeyIndex.png" alt="" /></p></div>
<div class="section">
<h5><a name="IndexedElement"></a>IndexedElement</h5>
<p><b><img src="../images/diagrams/IndexedElement.png" alt="" /></b></p></div>
<div class="section">
<h5><a name="ArrayIndexElement"></a>ArrayIndexElement</h5>
<p><b><img src="../images/diagrams/ArrayIndexElement.png" alt="" /></b></p></div>
<div class="section">
<h5><a name="IndexField"></a>IndexField</h5>
<p><b><img src="../images/diagrams/IndexField.png" alt="" /></b></p></div>
<div class="section">
<h5><a name="NestedField"></a>NestedField</h5>
<p><img src="../images/diagrams/NestedField.png" alt="" /></p></div>
<div class="section">
<h5><a name="IndexType"></a>IndexType</h5>
<p><img src="../images/diagrams/IndexType.png" alt="" /></p>
<p>The <tt>CREATE INDEX</tt> statement creates a secondary index on one or more fields of a specified dataset. Supported index types include <tt>BTREE</tt> for totally ordered datatypes, <tt>RTREE</tt> for spatial data, and <tt>KEYWORD</tt> and <tt>NGRAM</tt> for textual (string) data. An index can be created on a nested field (or fields) by providing a valid path expression as an index field identifier. An array index can be created on an array or multiset datatype by providing a sequence of <tt>UNNEST</tt> and <tt>SELECT</tt>s to identify the field(s) to be indexed.</p>
<p>An indexed field is not required to be part of the datatype associated with a dataset if the dataset&#x2019;s datatype is declared as open <b>and</b> if the field&#x2019;s type is provided along with its name and if the <tt>ENFORCED</tt> keyword is specified at the end of the index definition. <tt>ENFORCING</tt> an open field introduces a check that makes sure that the actual type of the indexed field (if the optional field exists in the object) always matches this specified (open) field type.</p>
<p>The following example creates a btree index called <tt>cCustIdx</tt> on the <tt>custid</tt> field of the orders dataset. This index can be useful for accelerating exact-match queries, range search queries, and joins involving the <tt>custid</tt> field.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX cCustIdx ON orders(custid) TYPE BTREE;
</pre></div></div>

<p>The following example creates a btree index called <tt>oCNameIdx</tt> on the <tt>cname</tt> field of the orders dataset, but does not insert <tt>NULL</tt> and <tt>MISSING</tt> values into the index. By default, if <tt>INCLUDE/EXCLUDE UNKNOWN KEY</tt> is not specified, unknown values will be inserted into btree indexes.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX oCNametIdx ON orders(cname) EXCLUDE UNKNOWN KEY;
</pre></div></div>

<p>The following example creates an open btree index called <tt>oCreatedTimeIdx</tt> on the (non-declared) <tt>createdTime</tt> field of the <tt>orders</tt> dataset having <tt>datetime</tt> type. This index can be useful for accelerating exact-match queries, range search queries, and joins involving the <tt>createdTime</tt> field. The index is enforced so that records that do not have the <tt>createdTime</tt> field or have a mismatched type on the field cannot be inserted into the dataset.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX oCreatedTimeIdx ON orders(createdTime: datetime?) TYPE BTREE ENFORCED;
</pre></div></div>

<p>The following example creates an open btree index called <tt>cAddedTimeIdx</tt> on the (non-declared) <tt>addedTime</tt> field of the <tt>customers</tt> dataset having datetime type. This index can be useful for accelerating exact-match queries, range search queries, and joins involving the <tt>addedTime</tt> field. The index is not enforced so that records that do not have the <tt>addedTime</tt> field or have a mismatched type on the field can still be inserted into the dataset.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX cAddedTimeIdx ON customers(addedTime: datetime?);
</pre></div></div>

<p>The following example creates a btree index called <tt>oOrderUserNameIdx</tt> on <tt>orderUserName</tt>, a nested field residing within a object-valued user field in the <tt>orders</tt> dataset. This index can be useful for accelerating exact-match queries, range search queries, and joins involving the nested <tt>orderUserName</tt> field.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX oOrderUserNameIdx ON orders(order.orderUserName) TYPE BTREE;
</pre></div></div>

<p>The following example creates an array index called <tt>oItemsPriceIdx</tt> on the <tt>price</tt> field inside the <tt>items</tt> array of the <tt>orders</tt> dataset. This index can be useful for accelerating membership queries, existential or universal quantification queries, or joins involving the <tt>price</tt> field inside this array. Unknown values cannot currently be stored inside array indexes, so <tt>EXCLUDE UNKNOWN KEY</tt> must be specified.</p></div></div>
<div class="section">
<h4><a name="Example"></a>Example</h4>

<div>
<div>
<pre class="source">CREATE INDEX oItemsPriceIdx ON orders(UNNEST items SELECT price) EXCLUDE UNKNOWN KEY;
</pre></div></div>

<p>The following example creates an open rtree index called <tt>oOrderLocIdx</tt> on the order-location field of the <tt>orders</tt> dataset. This index can be useful for accelerating queries that use the <a href="builtins.html#spatial_intersect"><tt>spatial-intersect</tt> function</a> in a predicate involving the sender-location field.</p>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX oOrderLocIDx ON orders(`order-location` : point?) TYPE RTREE ENFORCED;
</pre></div></div>

<p>The following example creates a 3-gram index called <tt>cUserIdx</tt> on the name field of the <tt>customers</tt> dataset. This index can be used to accelerate some similarity or substring maching queries on the name field. For details refer to the document on <a href="similarity.html#NGram_Index">similarity queries</a>.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX cUserIdx ON customers(name) TYPE NGRAM(3);
</pre></div></div>

<p>The following example creates a keyword index called <tt>oCityIdx</tt> on the <tt>city</tt> within the <tt>address</tt> field of the <tt>customers</tt> dataset. This keyword index can be used to optimize queries with token-based similarity predicates on the <tt>address</tt> field. For details refer to the document on <a href="similarity.html#Keyword_Index">similarity queries</a>.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE INDEX oCityIdx ON customers(address.city) TYPE KEYWORD;
</pre></div></div>

<p>The following example creates a special secondary index which holds only the primary keys. This index is useful for speeding up aggregation queries which involve only primary keys. The name of the index is optional. If the name is not specified, the system will generate one. When the user would like to drop this index, the metadata can be queried to find the system-generated name.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE PRIMARY INDEX cus_pk_idx ON customers;
</pre></div></div>

<p>An example query that can be accelerated using the primary-key index:</p>

<div>
<div>
<pre class="source">SELECT COUNT(*) FROM customers;
</pre></div></div>

<p>To look up the the above primary-key index, issue the following query:</p>

<div>
<div>
<pre class="source">SELECT VALUE i
FROM Metadata.`Index` i
WHERE i.DataverseName = &quot;Commerce&quot; AND i.DatasetName = &quot;customers&quot;;
</pre></div></div>

<p>The query returns:</p>

<div>
<div>
<pre class="source">[
    {
        &quot;DataverseName&quot;: &quot;Commerce&quot;,
        &quot;DatasetName&quot;: &quot;customers&quot;,
        &quot;IndexName&quot;: &quot;cus_pk_idx&quot;,
        &quot;IndexStructure&quot;: &quot;BTREE&quot;,
        &quot;SearchKey&quot;: [],
        &quot;IsPrimary&quot;: false,
        &quot;Timestamp&quot;: &quot;Fri Sep 18 14:15:51 PDT 2020&quot;,
        &quot;PendingOp&quot;: 0
    },
    {
        &quot;DataverseName&quot;: &quot;Commerce&quot;,
        &quot;DatasetName&quot;: &quot;customers&quot;,
        &quot;IndexName&quot;: &quot;customers&quot;,
        &quot;IndexStructure&quot;: &quot;BTREE&quot;,
        &quot;SearchKey&quot;: [
            [
                &quot;custid&quot;
            ]
        ],
        &quot;IsPrimary&quot;: true,
        &quot;Timestamp&quot;: &quot;Thu Jul 16 13:07:37 PDT 2020&quot;,
        &quot;PendingOp&quot;: 0
    }
]
</pre></div></div>

<p>Remember that <tt>CREATE PRIMARY INDEX</tt> creates a secondary index. That is the reason the <tt>IsPrimary</tt> field is false. The primary-key index can be identified by the fact that the <tt>SearchKey</tt> field is empty since it only contains primary key fields.</p></div></div>
<div class="section">
<h4><a name="Create_Synonym"></a><a name="Synonyms" id="Synonyms"> Create Synonym</a></h4>
<div class="section">
<h5><a name="CreateSynonym"></a>CreateSynonym</h5>
<p><img src="../images/diagrams/CreateSynonym.png" alt="" /></p>
<p>The <tt>CREATE SYNONYM</tt> statement creates a synonym for a given dataset or a view. This synonym may be used instead of the dataset name in <tt>SELECT</tt>, <tt>INSERT</tt>, <tt>UPSERT</tt>, <tt>DELETE</tt>, and <tt>LOAD</tt> statements, or instead of the view name in <tt>SELECT</tt> statements. The target dataset or view does not need to exist when the synonym is created. A synonym may be created for another synonym.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE DATASET customers(customersType) PRIMARY KEY custid;

CREATE SYNONYM customersSynonym FOR customers;

SELECT * FROM customersSynonym;
</pre></div></div>

<p>More information on how synonyms are resolved can be found in <a href="#Variable_bindings_and_name_resolution">Appendix 3. Variable Bindings and Name Resolution</a>.</p></div></div>
<div class="section">
<h4><a name="Create_Function"></a><a name="Create_function" id="Create_function">Create Function</a></h4>
<p>The <tt>CREATE FUNCTION</tt> statement creates a <b>named</b> function that can then be used and reused in queries. The body of a function can be any query expression involving the function&#x2019;s parameters.</p>
<div class="section">
<h5><a name="CreateFunction"></a>CreateFunction</h5>
<p><img src="../images/diagrams/CreateFunction.png" alt="" /></p></div>
<div class="section">
<h5><a name="FunctionParameters"></a>FunctionParameters</h5>
<p><img src="../images/diagrams/FunctionParameters.png" alt="" /></p></div>
<div class="section">
<h5><a name="ExternalFunctionDef"></a>ExternalFunctionDef</h5>
<p><img src="../images/diagrams/ExternalFunctionDef.png" alt="" /></p>
<p>The following is an example of a <tt>CREATE FUNCTION</tt> statement which is similar to our earlier <tt>DECLARE FUNCTION</tt> example.</p>
<p>It differs from that example in that it results in a function that is persistently registered by name in the specified dataverse (the current dataverse being used, if not otherwise specified).</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE FUNCTION nameSearch(customerId) {
    (SELECT c.custid, c.name
     FROM customers AS c
     WHERE u.custid = customerId)[0]
 };
</pre></div></div>

<p>The following is an example of CREATE FUNCTION statement that replaces an existing function.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE OR REPLACE FUNCTION friendInfo(userId) {
    (SELECT u.id, u.name
     FROM GleambookUsers u
     WHERE u.id = userId)[0]
 };
</pre></div></div>

<p>The following is an example of CREATE FUNCTION statement that introduces a function with a variable number of arguments. The arguments are accessible in the function body via <tt>args</tt> array parameter.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE FUNCTION strJoin(...) {
    string_join(args, &quot;,&quot;)
};
</pre></div></div>

<p>External functions can also be loaded into Libraries via the <a href="../udf.html">UDF API</a>. Given an already loaded library <tt>pylib</tt>, a function <tt>sentiment</tt> mapping to a Python method <tt>sent_model.sentiment</tt> in <tt>sentiment_mod</tt> would be as follows</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE FUNCTION sentiment(a) AS &quot;sentiment_mod&quot;, &quot;sent_model.sentiment&quot; AT pylib;
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="Create_View"></a><a name="Create_view" id="Create_view">Create View</a></h4>
<p>The <tt>CREATE VIEW</tt> statement creates a <b>named</b> view that can then be used in queries. The body of a view can be any <tt>SELECT</tt> statement.</p>
<div class="section">
<h5><a name="CreateView"></a>CreateView</h5>
<p><img src="../images/diagrams/CreateView.png" alt="" /></p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">CREATE DATASET customers(customersType) PRIMARY KEY custid;

CREATE VIEW customersView AS 
    SELECT c.custid, c.name
    FROM customers AS c 
    WHERE c.address.city = &quot;Boston, MA&quot;;

SELECT * FROM customersView;
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Drop_Statement"></a><a name="Removal" id="Removal">Drop Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="DropStmnt"></a>DropStmnt</h5>
<p><img src="../images/diagrams/DropStmnt.png" alt="" /></p></div>
<div class="section">
<h5><a name="DataverseName"></a>DataverseName</h5>
<p><img src="../images/diagrams/DataverseName.png" alt="" /></p></div>
<div class="section">
<h5><a name="QualifiedName"></a>QualifiedName</h5>
<p><img src="../images/diagrams/QualifiedName.png" alt="" /></p></div>
<div class="section">
<h5><a name="DoubleQualifiedName"></a>DoubleQualifiedName</h5>
<p><img src="../images/diagrams/DoubleQualifiedName.png" alt="" /></p></div>
<div class="section">
<h5><a name="FunctionSignature"></a>FunctionSignature</h5>
<p><img src="../images/diagrams/FunctionSignature.png" alt="" /></p></div>
<div class="section">
<h5><a name="FunctionParameters"></a>FunctionParameters</h5>
<p><img src="../images/diagrams/FunctionParameters.png" alt="" /></p>
<p>The <tt>DROP</tt> statement is the inverse of the <tt>CREATE</tt> statement. It can be used to drop dataverses, datatypes, datasets, indexes, functions, and synonyms.</p>
<p>The following examples illustrate some uses of the <tt>DROP</tt> statement.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">DROP DATASET customers IF EXISTS;

DROP INDEX orders.orderidIndex;

DROP TYPE customers2.customersType;

DROP FUNCTION nameSearch@1;

DROP SYNONYM customersSynonym;

DROP VIEW customersView;

DROP DATAVERSE CommerceData;
</pre></div></div>

<p>When an artifact is dropped, it will be droppped from the current dataverse if none is specified (see the <tt>DROP DATASET</tt> example above) or from the specified dataverse (see the <tt>DROP TYPE</tt> example above) if one is specified by fully qualifying the artifact name in the <tt>DROP</tt> statement. When specifying an index to drop, the index name must be qualified by the dataset that it indexes. When specifying a function to drop, since the query language allows functions to be overloaded by their number of arguments, the identifying name of the function to be dropped must explicitly include that information. (<tt>nameSearch@1</tt> above denotes the 1-argument function named <tt>nameSearch</tt> in the current dataverse.)</p></div></div></div>
<div class="section">
<h3><a name="Load_Statement"></a><a name="Load_statement" id="Load_statement">Load Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="LoadStmnt"></a>LoadStmnt</h5>
<p><img src="../images/diagrams/LoadStmnt.png" alt="" /></p></div>
<div class="section">
<h5><a name="AdapterName"></a>AdapterName</h5>
<p><img src="../images/diagrams/AdapterName.png" alt="" /></p></div>
<div class="section">
<h5><a name="Configuration"></a>Configuration</h5>
<p><img src="../images/diagrams/Configuration.png" alt="" /></p></div>
<div class="section">
<h5><a name="KeyValuePair"></a>KeyValuePair</h5>
<p><img src="../images/diagrams/KeyValuePair.png" alt="" /></p>
<p>The <tt>LOAD</tt> statement is used to initially populate a dataset via bulk loading of data from an external file. An appropriate adapter must be selected to handle the nature of the desired external data. The <tt>LOAD</tt> statement accepts the same adapters and the same parameters as discussed earlier for External datasets. (See the <a href="../aql/externaldata.html">guide to external data</a> for more information on the available adapters.) If a dataset has an auto-generated primary key field, the file to be imported should not include that field in it.</p>
<p>The target dataset name may be a synonym introduced by <tt>CREATE SYNONYM</tt> statement.</p>
<p>The following example shows how to bulk load the <tt>customers</tt> dataset from an external file containing data that has been prepared in ADM (Asterix Data Model) format.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source"> LOAD DATASET customers USING localfs
    ((&quot;path&quot;=&quot;127.0.0.1:///Users/bignosqlfan/commercenew/gbu.adm&quot;),(&quot;format&quot;=&quot;adm&quot;));
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Modification_statements" id="Modification_statements">Modification statements</a></h2>
<div class="section">
<h3><a name="Insert_Statement"></a><a name="Inserts" id="Inserts">Insert Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="InsertStmnt"></a>InsertStmnt</h5>
<p><img src="../images/diagrams/InsertStmnt.png" alt="" /></p>
<p>The <tt>INSERT</tt> statement is used to insert new data into a dataset. The data to be inserted comes from a query expression. This expression can be as simple as a constant expression, or in general it can be any legal query. In case the dataset has an auto-generated primary key, when performing an <tt>INSERT</tt> operation, the system allows the user to manually add the auto-generated key field in the <tt>INSERT</tt> statement, or skip that field and the system will automatically generate it and add it. However, it is important to note that if the a record already exists in the dataset with the auto-generated key provided by the user, then that operation is going to fail. As a general rule, insertion will fail if the dataset already has data with the primary key value(s) being inserted.</p>
<p>Inserts are processed transactionally by the system. The transactional scope of each insert transaction is the insertion of a single object plus its affiliated secondary index entries (if any). If the query part of an insert returns a single object, then the <tt>INSERT</tt> statement will be a single, atomic transaction. If the query part returns multiple objects, each object being inserted will be treated as a separate tranaction.</p>
<p>The target dataset name may be a synonym introduced by <tt>CREATE SYNONYM</tt> statement.</p>
<p>The following example illustrates a query-based insertion.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">INSERT INTO custCopy (SELECT VALUE c FROM customers c)
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Upsert_Statement"></a><a name="Upserts" id="Upserts">Upsert Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="UpsertStmnt"></a>UpsertStmnt</h5>
<p><img src="../images/diagrams/UpsertStmnt.png" alt="" /></p>
<p>The <tt>UPSERT</tt> statement syntactically mirrors the <tt>INSERT</tt>statement discussed above. The difference lies in its semantics, which for <tt>UPSERT</tt> are &#x201c;add or replace&#x201d; instead of the <tt>INSERT</tt> &#x201c;add if not present, else error&#x201d; semantics. Whereas an <tt>INSERT</tt> can fail if another object already exists with the specified key, the analogous <tt>UPSERT</tt> will replace the previous object&#x2019;s value with that of the new object in such cases. Like the <tt>INSERT</tt> statement, the system allows the user to manually provide the auto-generated key for datasets with an auto-generated key as its primary key. This operation will insert the record if no record with that key already exists, but if a record with the key already exists, then the operation will be converted to a replace/update operation.</p>
<p>The target dataset name may be a synonym introduced by <tt>CREATE SYNONYM</tt> statement.</p>
<p>The following example illustrates a query-based upsert operation.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">UPSERT INTO custCopy (SELECT VALUE c FROM customers c)
</pre></div></div>
</div></div></div>
<div class="section">
<h3><a name="Delete_Statement"></a><a name="Deletes" id="Deletes">Delete Statement</a></h3>
<div class="section">
<div class="section">
<h5><a name="DeleteStmnt"></a>DeleteStmnt</h5>
<p><img src="../images/diagrams/DeleteStmnt.png" alt="" /></p>
<p>The <tt>DELETE</tt> statement is used to delete data from a target dataset. The data to be deleted is identified by a boolean expression involving the variable bound to the target dataset in the <tt>DELETE</tt> statement.</p>
<p>Deletes are processed transactionally by the system. The transactional scope of each delete transaction is the deletion of a single object plus its affiliated secondary index entries (if any). If the boolean expression for a delete identifies a single object, then the <tt>DELETE</tt> statement itself will be a single, atomic transaction. If the expression identifies multiple objects, then each object deleted will be handled as a separate transaction.</p>
<p>The target dataset name may be a synonym introduced by <tt>CREATE SYNONYM</tt> statement.</p>
<p>The following examples illustrate single-object deletions.</p></div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">DELETE FROM customers c WHERE c.custid = &quot;C41&quot;;
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">DELETE FROM customers WHERE custid = &quot;C47&quot;;
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<h1><a name="Reserved_keywords" id="Reserved_keywords">Appendix 1. Reserved keywords</a></h1><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>All reserved keywords are listed in the following table:</p>
<table border="0" class="table table-striped">
<thead>

<tr class="a">
<th>     </th>
<th>     </th>
<th>       </th>
<th>    </th>
<th>     </th>
<th>    </th></tr>
</thead><tbody>

<tr class="b">
<td> ADAPTER </td>
<td> ALL </td>
<td> AND </td>
<td> ANY </td>
<td> APPLY </td>
<td> AS </td></tr>
<tr class="a">
<td> ASC </td>
<td> AT </td>
<td> AUTOGENERATED </td>
<td> BETWEEN </td>
<td> BTREE </td>
<td> BY </td></tr>
<tr class="b">
<td> CASE </td>
<td> CLOSED </td>
<td> COLLECTION </td>
<td> CREATE </td>
<td> COMPACTION </td>
<td> COMPACT </td></tr>
<tr class="a">
<td> CONNECT </td>
<td> CORRELATE </td>
<td> DATASET </td>
<td> DATAVERSE </td>
<td> DECLARE </td>
<td> DEFINITION </td></tr>
<tr class="b">
<td> DELETE </td>
<td> DESC </td>
<td> DISCONNECT </td>
<td> DISTINCT </td>
<td> DIV </td>
<td> DROP </td></tr>
<tr class="a">
<td> ELEMENT </td>
<td> EXPLAIN </td>
<td> ELSE </td>
<td> ENFORCED </td>
<td> END </td>
<td> EVERY </td></tr>
<tr class="b">
<td> EXCEPT </td>
<td> EXIST </td>
<td> EXTERNAL </td>
<td> FEED </td>
<td> FILTER </td>
<td> FLATTEN </td></tr>
<tr class="a">
<td> FOR </td>
<td> FROM </td>
<td> FULL </td>
<td> FULLTEXT </td>
<td> FUNCTION </td>
<td> GROUP </td></tr>
<tr class="b">
<td> HAVING </td>
<td> HINTS </td>
<td> IF </td>
<td> INTO </td>
<td> IN </td>
<td> INDEX </td></tr>
<tr class="a">
<td> INGESTION </td>
<td> INNER </td>
<td> INSERT </td>
<td> INTERNAL </td>
<td> INTERSECT </td>
<td> IS </td></tr>
<tr class="b">
<td> JOIN </td>
<td> KEYWORD </td>
<td> LEFT </td>
<td> LETTING </td>
<td> LET </td>
<td> LIKE </td></tr>
<tr class="a">
<td> LIMIT </td>
<td> LOAD </td>
<td> MISSING </td>
<td> NODEGROUP </td>
<td> NGRAM </td>
<td> NOT </td></tr>
<tr class="b">
<td> NULL </td>
<td> OFFSET </td>
<td> ON </td>
<td> OPEN </td>
<td> OR </td>
<td> ORDER </td></tr>
<tr class="a">
<td> OUTER </td>
<td> OUTPUT </td>
<td> OVER </td>
<td> PATH </td>
<td> POLICY </td>
<td> PRE-SORTED </td></tr>
<tr class="b">
<td> PRIMARY </td>
<td> RAW </td>
<td> REFRESH </td>
<td> RETURN </td>
<td> RETURNING </td>
<td> RIGHT </td></tr>
<tr class="a">
<td> RTREE </td>
<td> RUN </td>
<td> SATISFIES </td>
<td> SECONDARY </td>
<td> SELECT </td>
<td> SET </td></tr>
<tr class="b">
<td> SOME </td>
<td> START </td>
<td> STOP </td>
<td> SYNONYM </td>
<td> TEMPORARY </td>
<td> THEN </td></tr>
<tr class="a">
<td> TO </td>
<td> TRUE </td>
<td> TYPE </td>
<td> UNION </td>
<td> UNKNOWN </td>
<td> UNNEST </td></tr>
<tr class="b">
<td> UPDATE </td>
<td> UPSERT </td>
<td> USE </td>
<td> USING </td>
<td> VALUE </td>
<td> VALUED </td></tr>
<tr class="a">
<td> WHEN </td>
<td> WHERE </td>
<td> WITH </td>
<td> WRITE </td>
<td>     </td>
<td>     </td></tr>
</tbody>
</table><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Appendix_2._Performance_Tuning"></a><a name="Performance_tuning" id="Performance_tuning">Appendix 2. Performance Tuning</a></h2><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>The <tt>SET</tt> statement can be used to override some cluster-wide configuration parameters for a specific request:</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="SetStmnt"></a>SetStmnt</h5>
<p><img src="../images/diagrams/SetStmnt.png" alt="" /></p>
<p>As parameter identifiers are qualified names (containing a &#x2018;.&#x2019;) they have to be escaped using backticks (``). Note that changing query parameters will not affect query correctness but only impact performance characteristics, such as response time and throughput.</p></div></div></div></div>
<div class="section">
<h2><a name="Parallelism_Parameter"></a><a name="Parallelism_parameter" id="Parallelism_parameter">Parallelism Parameter</a></h2>
<p>The system can execute each request using multiple cores on multiple machines (a.k.a., partitioned parallelism) in a cluster. A user can manually specify the maximum execution parallelism for a request to scale it up and down using the following parameter:</p>
<ul>

<li><b>compiler.parallelism</b>: the maximum number of CPU cores can be used to process a query. There are three cases of the value <i>p</i> for compiler.parallelism:
<ul>

<li>

<p><i>p</i> &lt; 0 or <i>p</i> &gt; the total number of cores in a cluster:  the system will use all available cores in the cluster;</p>
</li>
<li>

<p><i>p</i> = 0 (the default):  the system will use the storage parallelism (the number of partitions of stored datasets) as the maximum parallelism for query processing;</p>
</li>
<li>

<p>all other cases:  the system will use the user-specified number as the maximum number of CPU cores to use for executing the query.</p>
</li>
</ul>
</li>
</ul>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">SET `compiler.parallelism` &quot;16&quot;;

SELECT c.name AS cname, o.orderno AS orderno
FROM customers c JOIN orders o ON c.custid = o.custid;
</pre></div></div>
</div></div></div></div>
<div class="section">
<h2><a name="Memory_Parameters"></a><a name="Memory_parameters" id="Memory_parameters">Memory Parameters</a></h2>
<p>In the system, each blocking runtime operator such as join, group-by and order-by works within a fixed memory budget, and can gracefully spill to disks if the memory budget is smaller than the amount of data they have to hold. A user can manually configure the memory budget of those operators within a query. The supported configurable memory parameters are:</p>
<ul>

<li>

<p><b>compiler.groupmemory</b>: the memory budget that each parallel group-by operator instance can use; 32MB is the default budget.</p>
</li>
<li>

<p><b>compiler.sortmemory</b>: the memory budget that each parallel sort operator instance can use; 32MB is the default budget.</p>
</li>
<li>

<p><b>compiler.joinmemory</b>: the memory budget that each parallel hash join operator instance can use; 32MB is the default budget.</p>
</li>
<li>

<p><b>compiler.windowmemory</b>: the memory budget that each parallel window aggregate operator instance can use; 32MB is the default budget.</p>
</li>
</ul>
<p>For each memory budget value, you can use a 64-bit integer value with a 1024-based binary unit suffix (for example, B, KB, MB, GB). If there is no user-provided suffix, &#x201c;B&#x201d; is the default suffix. See the following examples.</p>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">SET `compiler.groupmemory` &quot;64MB&quot;;

SELECT c.custid, COUNT(*)
FROM customers c
GROUP BY c.custid;
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">SET `compiler.sortmemory` &quot;67108864&quot;;

SELECT VALUE o
FROM orders AS o
ORDER BY ARRAY_LENGTH(o.items) DESC;
</pre></div></div>
</div>
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">SET `compiler.joinmemory` &quot;132000KB&quot;;

SELECT c.name AS cname, o.ordeno AS orderno
FROM customers c JOIN orders o ON c.custid = o.custid;
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Parallel_Sort_Parameter"></a><a name="Parallel_sort_parameter" id="Parallel_sort_parameter">Parallel Sort Parameter</a></h2>
<p>The following parameter enables you to activate or deactivate full parallel sort for order-by operations.</p>
<p>When full parallel sort is inactive (<tt>false</tt>), each existing data partition is sorted (in parallel), and then all data partitions are merged into a single node.</p>
<p>When full parallel sort is active (<tt>true</tt>), the data is first sampled, and then repartitioned so that each partition contains data that is greater than the previous partition. The data in each partition is then sorted (in parallel), but the sorted partitions are not merged into a single node.</p>
<ul>

<li><b>compiler.sort.parallel</b>: A boolean specifying whether full parallel sort is active (<tt>true</tt>) or inactive (<tt>false</tt>). The default value is <tt>true</tt>.</li>
</ul>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">SET `compiler.sort.parallel` &quot;true&quot;;

SELECT VALUE o
FROM orders AS o
ORDER BY ARRAY_LENGTH(o.items) DESC;
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Controlling_Index-Only-Plan_Parameter"></a><a name="Index_Only" id="Index_Only">Controlling Index-Only-Plan Parameter</a></h2>
<p>By default, the system tries to build an index-only plan whenever utilizing a secondary index is possible. For example, if a <tt>SELECT</tt> or <tt>JOIN</tt> query can utilize an enforced B+Tree or R-Tree index on a field, the optimizer checks whether a secondary-index search alone can generate the result that the query asks for. It mainly checks two conditions: (1) predicates used in <tt>WHERE</tt> only uses the primary key field and/or secondary key field and (2) the result does not return any other fields. If these two conditions hold, it builds an index-only plan. Since an index-only plan only searches a secondary-index to answer a query, it is faster than a non-index-only plan that needs to search the primary index. However, this index-only plan can be turned off per query by setting the following parameter.</p>
<ul>

<li><b>compiler.indexonly</b>: if this is set to false, the index-only-plan will not be applied; the default value is true.</li>
</ul>
<div class="section">
<div class="section">
<div class="section">
<h5><a name="Example"></a>Example</h5>

<div>
<div>
<pre class="source">set `compiler.indexonly` &quot;false&quot;;

SELECT o.order_date AS orderdate
FROM orders o where o.order_date = &quot;2020-05-01&quot;;
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Controlling_Array-Index_Access_Method_Plan_Parameter"></a><a name="ArrayIndexFlag" id="ArrayIndexFlag">Controlling Array-Index Access Method Plan Parameter</a></h2>
<p>By default, the system attempts to utilize array indexes as an access method if an array index is present and is applicable. If you believe that your query will not benefit from an array index, toggle the parameter below.</p>
<ul>

<li><b>compiler.arrayindex</b>: if this is set to true, array indexes will be considered as an access method for applicable queries; the default value is true.</li>
</ul>
<div class="section">
<div class="section">
<h4><a name="Example"></a>Example</h4>

<div>
<div>
<pre class="source">set `compiler.arrayindex` &quot;false&quot;;

SELECT o.orderno
FROM orders o
WHERE SOME i IN o.items
SATISFIES i.price = 19.91;
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div>
<div class="section">
<h2><a name="Query_Hints"></a><a name="Query_hints" id="Query_hints">Query Hints</a></h2>
<div class="section">
<div class="section">
<h4><a name="a.E2.80.9Chash.E2.80.9D_GROUP_BY_hint"></a><a name="hash_groupby" id="hash_groupby">&#x201c;hash&#x201d; GROUP BY hint</a></h4>
<p>The system supports two algorithms for GROUP BY clause evaluation: pre-sorted and hash-based. By default it uses the pre-sorted approach: The input data is first sorted on the grouping fields and then aggregation is performed on that sorted data. The alternative is a hash-based strategy which can be enabled via a <tt>/*+ hash */</tt> GROUP BY hint: The data is aggregated using an in-memory hash-table (that can spill to disk if necessary). This approach is recommended for low-cardinality grouping fields.</p>
<div class="section">
<h5><a name="Example:"></a>Example:</h5>

<div>
<div>
<pre class="source">SELECT c.address.state, count(*)
FROM Customers AS c
/*+ hash */ GROUP BY c.address.state
</pre></div></div>
</div></div>
<div class="section">
<h4><a name="a.E2.80.9Chash-bcast.E2.80.9D_JOIN_hint"></a><a name="hash_bcast_join" id="hash_bcast_join">&#x201c;hash-bcast&#x201d; JOIN hint</a></h4>
<p>By default the system uses a partitioned-parallel hash join strategy to parallelize the execution of an equi-join. In this approach both sides of the join are repartitioned (if necessary) on a hash of the join key; potentially matching data items thus arrive at the same partition to be joined locally. This strategy is robust, but not always the fastest when one of the join sides is low cardinality and the other is high cardinality (since it scans and potentially moves the data from both sides). This special case can be better handled by broadcasting (replicating) the smaller side to all data partitions of the larger side and not moving the data from the other (larger) side. The system provides a join hint to enable this strategy: <tt>/*+ hash-bcast */</tt>. This hint forces the right side of the join to be replicated while the left side retains its original partitioning.</p>
<div class="section">
<h5><a name="Example:"></a>Example:</h5>

<div>
<div>
<pre class="source">SELECT *
FROM Orders AS o JOIN Customers AS c
ON o.customer_id /*+ hash-bcast */ = c.customer_id
</pre></div></div>
<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div></div></div></div>
<div class="section">
<h2><a name="Appendix_3._Variable_Bindings_and_Name_Resolution"></a><a name="Variable_bindings_and_name_resolution" id="Variable_bindings_and_name_resolution">Appendix 3. Variable Bindings and Name Resolution</a></h2><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>In this Appendix, we&#x2019;ll look at how variables are bound and how names are resolved. Names can appear in every clause of a query. Sometimes a name consists of just a single identifier, e.g., <tt>region</tt> or <tt>revenue</tt>. More often a name will consist of two identifiers separated by a dot, e.g., <tt>customer.address</tt>. Occasionally a name may have more than two identifiers, e.g., <tt>policy.owner.address.zipcode</tt>. <i>Resolving</i> a name means determining exactly what the (possibly multi-part) name refers to. It is necessary to have well-defined rules for how to resolve a name in cases of ambiguity. (In the absence of schemas, such cases arise more commonly, and also differently, than they do in SQL.)</p>
<p>The basic job of each clause in a query block is to bind variables. Each clause sees the variables bound by previous clauses and may bind additional variables. Names are always resolved with respect to the variables that are bound (&#x201c;in scope&#x201d;) at the place where the name use in question occurs. It is possible that the name resolution process will fail, which may lead to an empty result or an error message.</p>
<p>One important bit of background: When the system is reading a query and resolving its names, it has a list of all the available dataverses and datasets. As a result, it knows whether <tt>a.b</tt> is a valid name for dataset <tt>b</tt> in dataverse <tt>a</tt>. However, the system does not in general have knowledge of the schemas of the data inside the datasets; remember that this is a much more open world. As a result, in general the system cannot know whether any object in a particular dataset will have a field named <tt>c</tt>. These assumptions affect how errors are handled. If you try to access dataset <tt>a.b</tt> and no dataset by that name exists, you will get an error and your query will not run. However, if you try to access a field <tt>c</tt> in a collection of objects, your query will run and return <tt>missing</tt> for each object that doesn&#x2019;t have a field named <tt>c</tt> - this is because it&#x2019;s possible that some object (someday) could have such a field.</p></div>
<div class="section">
<h2><a name="Binding_Variables"></a><a name="Binding_variables" id="Binding_variables">Binding Variables</a></h2>
<p>Variables can be bound in the following ways:</p>
<ol style="list-style-type: decimal">

<li>

<p><tt>WITH</tt> and <tt>LET</tt> clauses bind a variable to the result of an expression in a straightforward way</p>
<p>Examples:</p>
<p><tt>WITH cheap_parts AS (SELECT partno FROM parts WHERE price &lt; 100)</tt> binds the variable <tt>cheap_parts</tt> to the result of the subquery.</p>
<p><tt>LET pay = salary + bonus</tt> binds the variable <tt>pay</tt> to the result of evaluating the expression <tt>salary + bonus</tt>.</p>
</li>
<li>

<p><tt>FROM</tt>, <tt>GROUP BY</tt>, and <tt>SELECT</tt> clauses have optional <tt>AS</tt> subclauses that contain an expression and a name (called an <i>iteration variable</i> in a <tt>FROM</tt> clause, or an alias in <tt>GROUP BY</tt> or <tt>SELECT</tt>).</p>
<p>Examples:</p>
<p><tt>FROM customer AS c, order AS o</tt></p>
<p><tt>GROUP BY salary + bonus AS total_pay</tt></p>
<p><tt>SELECT MAX(price) AS highest_price</tt></p>
<p>An <tt>AS</tt> subclause always binds the name (as a variable) to the result of the expression (or, in the case of a <tt>FROM</tt> clause, to the <i>individual members</i> of the collection identified by the expression).</p>
<p>It&#x2019;s always a good practice to use the keyword <tt>AS</tt> when defining an alias or iteration variable. However, as in SQL, the syntax allows the keyword <tt>AS</tt> to be omitted. For example, the <tt>FROM</tt> clause above could have been written like this:</p>
<p><tt>FROM customer c, order o</tt></p>
<p>Omitting the keyword <tt>AS</tt> does not affect the binding of variables. The FROM clause in this example binds variables c and o whether the keyword AS is used or not.</p>
<p>In certain cases, a variable is automatically bound even if no alias or variable-name is specified. Whenever an expression could have been followed by an AS subclause, if the expression consists of a simple name or a path expression, that expression binds a variable whose name is the same as the simple name or the last step in the path expression. Here are some examples:</p>
<p><tt>FROM customer, order</tt> binds iteration variables named <tt>customer</tt> and <tt>order</tt></p>
<p><tt>GROUP BY address.zipcode</tt> binds a variable named <tt>zipcode</tt></p>
<p><tt>SELECT item[0].price</tt> binds a variable named <tt>price</tt></p>
<p>Note that a <tt>FROM</tt> clause iterates over a collection (usually a dataset), binding a variable to each member of the collection in turn. The name of the collection remains in scope, but it is not a variable. For example, consider this <tt>FROM</tt> clause used in a self-join:</p>
<p><tt>FROM customer AS c1, customer AS c2</tt></p>
<p>This <tt>FROM</tt> clause joins the customer dataset to itself, binding the iteration variables <tt>c1</tt> and <tt>c2</tt> to objects in the left-hand-side and right-hand-side of the join, respectively. After the <tt>FROM</tt> clause, <tt>c1</tt> and <tt>c2</tt> are in scope as variables, and customer remains accessible as a dataset name but not as a variable.</p>
</li>
<li>

<p>Special rules for <tt>GROUP BY</tt>:</p>
<ul>

<li>

<p>(3A): If a <tt>GROUP BY</tt> clause specifies an expression that has no explicit alias, it binds a pseudo-variable that is lexicographically identical to the expression itself. For example:</p>
<p><tt>GROUP BY salary + bonus</tt> binds a pseudo-variable named <tt>salary + bonus</tt>.</p>
<p>This rule allows subsequent clauses to refer to the grouping expression (salary + bonus) even though its constituent variables (salary and bonus) are no longer in scope. For example, the following query is valid:</p>

<div>
<div>
<pre class="source">FROM employee
GROUP BY salary + bonus
HAVING salary + bonus &gt; 1000
SELECT salary + bonus, COUNT(*) AS how_many
</pre></div></div>

<p>While it might have been more elegant to explicitly require an alias in cases like this, the pseudo-variable rule is retained for SQL compatibility. Note that the expression <tt>salary + bonus</tt> is not <i>actually</i> evaluated in the <tt>HAVING</tt> and <tt>SELECT</tt> clauses (and could not be since <tt>salary</tt> and <tt>bonus</tt> are no longer individually in scope). Instead, the expression <tt>salary + bonus</tt> is treated as a reference to the pseudo-variable defined in the <tt>GROUP BY</tt> clause.</p>
</li>
<li>

<p>(3B): The <tt>GROUP BY</tt> clause may be followed by a <tt>GROUP AS</tt> clause that binds a variable to the group. The purpose of this variable is to make the individual objects inside the group visible to subqueries that may need to iterate over them.</p>
<p>The <tt>GROUP AS</tt> variable is bound to a multiset of objects. Each object represents one of the members of the group. Since the group may have been formed from a join, each of the member-objects contains a nested object for each variable bound by the nearest <tt>FROM</tt> clause (and its <tt>LET</tt> subclause, if any). These nested objects, in turn, contain the actual fields of the group-member. To understand this process, consider the following query fragment:</p>

<div>
<div>
<pre class="source">FROM parts AS p, suppliers AS s
WHERE p.suppno = s.suppno
GROUP BY p.color GROUP AS g
</pre></div></div>

<p>Suppose that the objects in <tt>parts</tt> have fields <tt>partno</tt>, <tt>color</tt>, and <tt>suppno</tt>. Suppose that the objects in suppliers have fields <tt>suppno</tt> and <tt>location</tt>.</p>
<p>Then, for each group formed by the <tt>GROUP BY</tt>, the variable g will be bound to a multiset with the following structure:</p>

<div>
<div>
<pre class="source">[ { &quot;p&quot;: { &quot;partno&quot;: &quot;p1&quot;, &quot;color&quot;: &quot;red&quot;, &quot;suppno&quot;: &quot;s1&quot; },
    &quot;s&quot;: { &quot;suppno&quot;: &quot;s1&quot;, &quot;location&quot;: &quot;Denver&quot; } },
  { &quot;p&quot;: { &quot;partno&quot;: &quot;p2&quot;, &quot;color&quot;: &quot;red&quot;, &quot;suppno&quot;: &quot;s2&quot; },
    &quot;s&quot;: { &quot;suppno&quot;: &quot;s2&quot;, &quot;location&quot;: &quot;Atlanta&quot; } },
  ...
]
</pre></div></div>
</li>
</ul>
</li>
</ol></div>
<div class="section">
<h2><a name="Scoping" id="Scoping">Scoping</a></h2>
<p>In general, the variables that are in scope at a particular position are those variables that were bound earlier in the current query block, in outer (enclosing) query blocks, or in a <tt>WITH</tt> clause at the beginning of the query. More specific rules follow.</p>
<p>The clauses in a query block are conceptually processed in the following order:</p>
<ul>

<li><tt>FROM</tt> (followed by LET subclause, if any)</li>
<li><tt>WHERE</tt></li>
<li><tt>GROUP BY</tt> (followed by LET subclause, if any)</li>
<li><tt>HAVING</tt></li>
<li><tt>SELECT</tt> or <tt>SELECT VALUE</tt></li>
<li><tt>ORDER BY</tt></li>
<li><tt>OFFSET</tt></li>
<li><tt>LIMIT</tt></li>
</ul>
<p>During processing of each clause, the variables that are in scope are those variables that are bound in the following places:</p>
<ol style="list-style-type: decimal">

<li>

<p>In earlier clauses of the same query block (as defined by the ordering given above).</p>
<p>Example: <tt>FROM orders AS o SELECT o.date</tt> The variable <tt>o</tt> in the <tt>SELECT</tt> clause is bound, in turn, to each object in the dataset <tt>orders</tt>.</p>
</li>
<li>

<p>In outer query blocks in which the current query block is nested. In case of duplication, the innermost binding wins.</p>
</li>
<li>

<p>In the <tt>WITH</tt> clause (if any) at the beginning of the query.</p>
</li>
</ol>
<p>However, in a query block where a <tt>GROUP BY</tt> clause is present:</p>
<ol style="list-style-type: decimal">

<li>

<p>In clauses processed before <tt>GROUP BY</tt>, scoping rules are the same as though no GROUP BY were present.</p>
</li>
<li>

<p>In clauses processed after <tt>GROUP BY</tt>, the variables bound in the nearest <tt>FROM</tt>-clause (and its <tt>LET</tt> subclause, if any) are removed from scope and replaced by the variables bound in the <tt>GROUP BY</tt> clause (and its <tt>LET</tt> subclause, if any). However, this replacement does not apply inside the arguments of the five SQL special aggregating functions (<tt>MIN</tt>, <tt>MAX</tt>, <tt>AVG</tt>, <tt>SUM</tt>, and <tt>COUNT</tt>). These functions still need to see the individual data items over which they are computing an aggregation. For example, after <tt>FROM employee AS e GROUP BY deptno</tt>, it would not be valid to reference <tt>e.salary</tt>, but <tt>AVG(e.salary)</tt> would be valid.</p>
</li>
</ol>
<p>Special case: In an expression inside a <tt>FROM</tt> clause, a variable is in scope if it was bound in an earlier expression in the same <tt>FROM</tt> clause. Example:</p>

<div>
<div>
<pre class="source">FROM orders AS o, o.items AS i
</pre></div></div>

<p>The reason for this special case is to support iteration over nested collections.</p>
<p>Note that, since the <tt>SELECT</tt> clause comes <i>after</i> the <tt>WHERE</tt> and <tt>GROUP BY</tt> clauses in conceptual processing order, any variables defined in <tt>SELECT</tt> are not visible in <tt>WHERE</tt> or <tt>GROUP BY</tt>. Therefore the following query will not return what might be the expected result (since in the WHERE clause, <tt>pay</tt> will be interpreted as a field in the <tt>emp</tt> object rather than as the computed value <tt>salary + bonus</tt>):</p>

<div>
<div>
<pre class="source">SELECT name, salary + bonus AS pay
FROM emp
WHERE pay &gt; 1000
ORDER BY pay
</pre></div></div>

<p>The likely intent of the query above can be accomplished as follows:</p>

<div>
<div>
<pre class="source">FROM emp AS e
LET pay = e.salary + e.bonus
WHERE pay &gt; 1000
SELECT e.name, pay
ORDER BY pay
</pre></div></div>

<p>Note that in the phrase <i>expr1</i> <tt>JOIN</tt> <i>expr2</i> <tt>ON</tt> <i>expr3</i>, variables defined in <i>expr1</i> are visible in <i>expr3</i> but not in <i>expr2</i>. Here&#x2019;s an example that will not work:</p>

<div>
<div>
<pre class="source">FROM orders AS o JOIN o.items AS i ON 1 = 1
</pre></div></div>

<p>The variable <tt>o</tt>, defined in the phrase before <tt>JOIN</tt>, cannot be used in the phrase immediately following <tt>JOIN</tt>. The probable intent of this example could be accomplished in either of the following ways:</p>

<div>
<div>
<pre class="source">FROM orders AS o UNNEST o.items AS i

FROM orders AS o, o.items AS i
</pre></div></div>

<p>To summarize this rule: You may not use left-correlation in an explicit <tt>JOIN</tt> clause.</p></div>
<div class="section">
<h2><a name="Resolving_Names"></a><a name="Resolving_names" id="Resolving_names">Resolving Names</a></h2>
<p>The process of name resolution begins with the leftmost identifier in the name. The rules for resolving the leftmost identifier are:</p>
<ol style="list-style-type: decimal">

<li>

<p><i>In a <tt>FROM</tt> clause</i>: Names in a <tt>FROM</tt> clause identify the collections over which the query block will iterate. These collections may be stored datasets, views, synonyms, or may be the results of nested query blocks. A stored dataset may be in a named dataverse or in the default dataverse. Thus, if the two-part name <tt>a.b</tt> is in a <tt>FROM</tt> clause, a might represent a dataverse and <tt>b</tt> might represent a dataset in that dataverse. Another example of a two-part name in a <tt>FROM</tt> clause is <tt>FROM orders AS o, o.items AS i</tt>. In <tt>o.items</tt>, <tt>o</tt> represents an order object bound earlier in the <tt>FROM</tt> clause, and items represents the items object inside that order.</p>
<p>The rules for resolving the leftmost identifier in a <tt>FROM</tt> clause (including a <tt>JOIN</tt> subclause), or in the expression following <tt>IN</tt> in a quantified predicate, are as follows:</p>
<ul>

<li>

<p>(1A):  If the identifier matches a variable-name that is in scope, it resolves to the binding of that variable. (Note that in the case of a subquery, an in-scope variable might have been bound in an outer query block; this is called a correlated subquery).</p>
</li>
<li>

<p>(1B):  Otherwise, if the identifier is the first part of a two-part name like <tt>a.b</tt>, the name is treated as <tt>dataverse.dataset</tt>. If the identifier stands alone as a one-part name, it is treated as the name of a dataset in the default dataverse. If the designated dataset exists then the identifier is resolved to that dataset, othwerise if a view with given name exists then the identifier is resolved to that view, otherwise if a synonym with given name exists then the identifier is resolved to the target dataset or the target view of that synonym (potentially recursively if this synonym points to another synonym). An error will result if the designated dataset, view, or a synonym with this name does not exist.</p>
<p>Datasets and views take precedence over synonyms, so if both a dataset (or a view) and a synonym have the same name then the resolution is to the dataset. Note that there cannot be a dataset and a view with the same name.</p>
</li>
</ul>
</li>
<li>

<p><i>Elsewhere in a query block</i>: In clauses other than <tt>FROM</tt>, a name typically identifies a field of some object. For example, if the expression <tt>a.b</tt> is in a <tt>SELECT</tt> or <tt>WHERE</tt> clause, it&#x2019;s likely that <tt>a</tt> represents an object and <tt>b</tt> represents a field in that object.</p>
<p>The rules for resolving the leftmost identifier in clauses other than the ones listed in Rule 1 are:</p>
<ul>

<li>

<p>(2A):  If the identifier matches a variable-name that is in scope, it resolves to the binding of that variable. (In the case of a correlated subquery, the in-scope variable might have been bound in an outer query block).</p>
</li>
<li>

<p>(2B):  (The &#x201c;Single Variable Rule&#x201d;): Otherwise, if the <tt>FROM</tt> clause in the current query block binds exactly one variable, the identifier is treated as a field access on the object bound to that variable. For example, in the query <tt>FROM customer SELECT address</tt>, the identifier address is treated as a field in the object bound to the variable <tt>customer</tt>. At runtime, if the object bound to <tt>customer</tt> has no <tt>address</tt> field, the <tt>address</tt> expression will return <tt>missing</tt>. If the <tt>FROM</tt> clause in the current query block binds multiple variables, name resolution fails with an &#x201c;ambiguous name&#x201d; error. If there&#x2019;s no <tt>FROM</tt> clause in the current query block, name resolution fails with an &#x201c;undefined identifier&#x201d; error. Note that the Single Variable Rule searches for bound variables only in the current query block, not in outer (containing) blocks. The purpose of this rule is to permit the compiler to resolve field-references unambiguously without relying on any schema information. Also note that variables defined by <tt>LET</tt> clauses do not participate in the resolution process performed by this rule.</p>
<p>Exception: In a query that has a <tt>GROUP BY</tt> clause, the Single Variable Rule does not apply in any clauses that occur after the <tt>GROUP BY</tt> because, in these clauses, the variables bound by the <tt>FROM</tt> clause are no longer in scope. In clauses after <tt>GROUP BY</tt>, only Rule (2A) applies.</p>
</li>
</ul>
</li>
<li>

<p>In an <tt>ORDER BY</tt> clause following a <tt>UNION ALL</tt> expression:</p>
<p>The leftmost identifier is treated as a field-access on the objects that are generated by the <tt>UNION ALL</tt>. For example:</p>

<div>
<div>
<pre class="source">query-block-1
UNION ALL
query-block-2
ORDER BY salary
</pre></div></div>

<p>In the result of this query, objects that have a foo field will be ordered by the value of this field; objects that have no foo field will appear at at the beginning of the query result (in ascending order) or at the end (in descending order.)</p>
</li>
<li>

<p><i>In a standalone expression</i>: If a query consists of a standalone expression then identifiers inside that expression are resolved according to Rule 1. For example, if the whole query is <tt>ARRAY_COUNT(a.b)</tt> then <tt>a.b</tt> will be treated as dataset <tt>b</tt> contained in dataverse <tt>a</tt>. Note that this rule only applies to identifiers which are located directly inside a standalone expression. Identifiers inside <tt>SELECT</tt> statements in a standalone expression are still resolved according to Rules 1-3. For example, if the whole query is <tt>ARRAY_SUM( (FROM employee AS e SELECT VALUE salary) )</tt> then <tt>salary</tt> is resolved as <tt>e.salary</tt> following the &#x201c;Single Variable Rule&#x201d; (Rule (2B)).</p>
</li>
<li>

<p>Once the leftmost identifier has been resolved, the following dots and identifiers in the name (if any) are treated as a path expression that navigates to a field nested inside that object. The name resolves to the field at the end of the path. If this field does not exist, the value <tt>missing</tt> is returned.</p>
</li>
</ol><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
</div>
<div class="section">
<h2><a name="Appendix_4._Example_Data"></a><a name="Manual_data" id="Manual_data">Appendix 4. Example Data</a></h2><!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->

<p>This appendix lists the data definitions and the datasets used for the examples provided throughout this manual.</p>
<div class="section">
<h3><a name="Data_Definitions"></a><a name="definition_statements" id="definition_statements">Data Definitions</a></h3>

<div>
<div>
<pre class="source">CREATE DATAVERSE Commerce IF NOT EXISTS;

USE Commerce;

CREATE TYPE addressType AS {
    street:			string,
    city:			string,
    zipcode:			string?
};

CREATE TYPE customerType AS {
    custid:			string,
    name:			string,
    address:			addressType?
};

CREATE DATASET customers(customerType)
    PRIMARY KEY custid;

CREATE TYPE itemType AS {
    itemno:			int,
    qty:			int,
    price:			int
};

CREATE TYPE orderType AS {
    orderno:			int,
    custid:			string,
    order_date:			string,
    ship_date:			string?,
    items:			[ itemType ]
};

CREATE DATASET orders(orderType)
    PRIMARY KEY orderno;
</pre></div></div>
</div>
<div class="section">
<h3><a name="Customers_Data"></a><a name="customers_data" id="customers_data">Customers Data</a></h3>

<div>
<div>
<pre class="source">[
    {
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;name&quot;: &quot;T. Cody&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;201 Main St.&quot;,
            &quot;city&quot;: &quot;St. Louis, MO&quot;,
            &quot;zipcode&quot;: &quot;63101&quot;
        },
        &quot;rating&quot;: 750
    },
    {
        &quot;custid&quot;: &quot;C25&quot;,
        &quot;name&quot;: &quot;M. Sinclair&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;690 River St.&quot;,
            &quot;city&quot;: &quot;Hanover, MA&quot;,
            &quot;zipcode&quot;: &quot;02340&quot;
        },
        &quot;rating&quot;: 690
    },
    {
        &quot;custid&quot;: &quot;C31&quot;,
        &quot;name&quot;: &quot;B. Pruitt&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;360 Mountain Ave.&quot;,
            &quot;city&quot;: &quot;St. Louis, MO&quot;,
            &quot;zipcode&quot;: &quot;63101&quot;
        }
    },
    {
        &quot;custid&quot;: &quot;C35&quot;,
        &quot;name&quot;: &quot;J. Roberts&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;420 Green St.&quot;,
            &quot;city&quot;: &quot;Boston, MA&quot;,
            &quot;zipcode&quot;: &quot;02115&quot;
        },
        &quot;rating&quot;: 565
    },
    {
        &quot;custid&quot;: &quot;C37&quot;,
        &quot;name&quot;: &quot;T. Henry&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;120 Harbor Blvd.&quot;,
            &quot;city&quot;: &quot;Boston, MA&quot;,
            &quot;zipcode&quot;: &quot;02115&quot;
        },
        &quot;rating&quot;: 750
    },
    {
        &quot;custid&quot;: &quot;C41&quot;,
        &quot;name&quot;: &quot;R. Dodge&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;150 Market St.&quot;,
            &quot;city&quot;: &quot;St. Louis, MO&quot;,
            &quot;zipcode&quot;: &quot;63101&quot;
        },
        &quot;rating&quot;: 640
    },
    {
        &quot;custid&quot;: &quot;C47&quot;,
        &quot;name&quot;: &quot;S. Logan&quot;,
        &quot;address&quot;: {
            &quot;street&quot;: &quot;Via del Corso&quot;,
            &quot;city&quot;: &quot;Rome, Italy&quot;
        },
        &quot;rating&quot;: 625
    }
]
</pre></div></div>
</div>
<div class="section">
<h3><a name="Orders_Data"></a><a name="orders_data" id="orders_data">Orders Data</a></h3>

<div>
<div>
<pre class="source">[
    {
        &quot;orderno&quot;: 1001,
        &quot;custid&quot;: &quot;C41&quot;,
        &quot;order_date&quot;: &quot;2020-04-29&quot;,
        &quot;ship_date&quot;: &quot;2020-05-03&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 347,
                &quot;qty&quot;: 5,
                &quot;price&quot;: 19.99
            },
            {
                &quot;itemno&quot;: 193,
                &quot;qty&quot;: 2,
                &quot;price&quot;: 28.89
            }
        ]
    },
    {
        &quot;orderno&quot;: 1002,
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;order_date&quot;: &quot;2020-05-01&quot;,
        &quot;ship_date&quot;: &quot;2020-05-03&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 460,
                &quot;qty&quot;: 95,
                &quot;price&quot;: 100.99
            },
            {
                &quot;itemno&quot;: 680,
                &quot;qty&quot;: 150,
                &quot;price&quot;: 8.75
            }
        ]
    },
    {
        &quot;orderno&quot;: 1003,
        &quot;custid&quot;: &quot;C31&quot;,
        &quot;order_date&quot;: &quot;2020-06-15&quot;,
        &quot;ship_date&quot;: &quot;2020-06-16&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 120,
                &quot;qty&quot;: 2,
                &quot;price&quot;: 88.99
            },
            {
                &quot;itemno&quot;: 460,
                &quot;qty&quot;: 3,
                &quot;price&quot;: 99.99
            }
        ]
    },
    {
        &quot;orderno&quot;: 1004,
        &quot;custid&quot;: &quot;C35&quot;,
        &quot;order_date&quot;: &quot;2020-07-10&quot;,
        &quot;ship_date&quot;: &quot;2020-07-15&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 680,
                &quot;qty&quot;: 6,
                &quot;price&quot;: 9.99
            },
            {
                &quot;itemno&quot;: 195,
                &quot;qty&quot;: 4,
                &quot;price&quot;: 35
            }
        ]
    },
    {
        &quot;orderno&quot;: 1005,
        &quot;custid&quot;: &quot;C37&quot;,
        &quot;order_date&quot;: &quot;2020-08-30&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 460,
                &quot;qty&quot;: 2,
                &quot;price&quot;: 99.98
            },
            {
                &quot;itemno&quot;: 347,
                &quot;qty&quot;: 120,
                &quot;price&quot;: 22
            },
            {
                &quot;itemno&quot;: 780,
                &quot;qty&quot;: 1,
                &quot;price&quot;: 1500
            },
            {
                &quot;itemno&quot;: 375,
                &quot;qty&quot;: 2,
                &quot;price&quot;: 149.98
            }
        ]
    },
    {
        &quot;orderno&quot;: 1006,
        &quot;custid&quot;: &quot;C41&quot;,
        &quot;order_date&quot;: &quot;2020-09-02&quot;,
        &quot;ship_date&quot;: &quot;2020-09-04&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 680,
                &quot;qty&quot;: 51,
                &quot;price&quot;: 25.98
            },
            {
                &quot;itemno&quot;: 120,
                &quot;qty&quot;: 65,
                &quot;price&quot;: 85
            },
            {
                &quot;itemno&quot;: 460,
                &quot;qty&quot;: 120,
                &quot;price&quot;: 99.98
            }
        ]
    },
    {
        &quot;orderno&quot;: 1007,
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;order_date&quot;: &quot;2020-09-13&quot;,
        &quot;ship_date&quot;: &quot;2020-09-20&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 185,
                &quot;qty&quot;: 5,
                &quot;price&quot;: 21.99
            },
            {
                &quot;itemno&quot;: 680,
                &quot;qty&quot;: 1,
                &quot;price&quot;: 20.5
            }
        ]
    },
    {
        &quot;orderno&quot;: 1008,
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;order_date&quot;: &quot;2020-10-13&quot;,
        &quot;items&quot;: [
            {
                &quot;itemno&quot;: 460,
                &quot;qty&quot;: 20,
                &quot;price&quot;: 99.99
            }
        ]
    },
    {
        &quot;orderno&quot;: 1009,
        &quot;custid&quot;: &quot;C13&quot;,
        &quot;order_date&quot;: &quot;2020-10-13&quot;,
        &quot;items&quot;: []
    }
]
</pre></div></div></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
        feather logo, and the Apache AsterixDB project logo are either
        registered trademarks or trademarks of The Apache Software
        Foundation in the United States and other countries.
        All other marks mentioned may be trademarks or registered
        trademarks of their respective owners.
      </div>
        </div>
      </div>
    </footer>
  </body>
</html>
