huaxingao commented on a change in pull request #27284: [SPARK-30575][DOC] 
Document HAVING Clause of SELECT statement in SQL Reference
URL: https://github.com/apache/spark/pull/27284#discussion_r368357508
 
 

 ##########
 File path: docs/sql-ref-syntax-qry-select-having.md
 ##########
 @@ -18,5 +18,101 @@ license: |
   See the License for the specific language governing permissions and
   limitations under the License.
 ---
+The <code>HAVING</code> clause is used to filter the results produced by
+<code>GROUP BY</code> based on the specified condition. It is often used
+in the conjunction with a <code>GROUP BY</code> clause.
 
-**This page is under construction**
+### Syntax
+{% highlight sql %}
+HAVING boolean_expression
+{% endhighlight %}
+
+### Parameters
+<dl>
+  <dt><code><em>boolean_expression</em></code></dt>
+  <dd>
+    Specifies any expression that evaluates to a result type 
<code>boolean</code>. Two or
+    more expressions may be combined together using comparision operators 
+    ('>', '>=', ‘>’, ‘>=’, ‘=’, ‘<’ and ‘<=’, '<=>') and logical operators 
(AND, NOT, OR).<br><br>
+
+    <b>Note</b><br>
+    The expressions specified in the <code>HAVING</code> clause can only refer 
to:
+     <ol>
+      <li>Constants</li>
+      <li>Expressions that appear in GROUP BY</li>
+      <li>Aggregate functions</li>
+    </ol>
+  </dd>
+</dl>
+
+### Examples
+{% highlight sql %}
+CREATE TABLE dealer (id INT, city STRING, car_model STRING, quantity INT);
+INSERT INTO dealer  VALUES (100, 'Fremont', 'Honda Civic', 10),
+                          (100, 'Fremont', 'Honda Accord', 15),
+                          (100, 'Fremont', 'Honda CRV', 7),
+                          (200, 'Dublin', 'Honda Civic', 20),
+                          (200, 'Dublin', 'Honda Accord', 10),
+                          (200, 'Dublin', 'Honda CRV', 3),
+                          (300, 'San Jose', 'Honda Civic', 5),
+                          (300, 'San Jose', 'Honda Accord', 8);
+
+-- `HAVING` clause referring to column in `GROUP BY`.
+SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING city = 
'Fremont';
+
+  +-------+---+
+  |city   |sum|
+  +-------+---+
+  |Fremont|32 |
+  +-------+---+
+
+-- `HAVING` clause referring to aggregate function.
+SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING 
sum(quantity) > 15;
+ 
+  +-------+---+
+  |   city|sum|
+  +-------+---+
+  | Dublin| 33|
+  |Fremont| 32|
+  +-------+---+
+
+-- `HAVING` clause referring to aggregate function by its alias.
+SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING sum > 15;
+
+  +-------+---+
+  |   city|sum|
+  +-------+---+
+  | Dublin| 33|
+  |Fremont| 32|
+  +-------+---+
+
+-- `HAVING` clause referring to a different aggregate function than what is 
present in
+-- `SELECT` list.
+SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING 
max(quantity) > 15;
+
+  +------+---+
+  |city  |sum|
+  +------+---+
+  |Dublin|33 |
+  +------+---+
+
+-- `HAVING` clause referring to constant expression.
+SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING 1 > 0 ORDER 
BY city;
+  
+  +--------+---+
+  |    city|sum|
+  +--------+---+
+  |  Dublin| 33|
+  | Fremont| 32|
+  |San Jose| 13|
+  +--------+---+
+
+-- `HAVING` clause without a `GROUP BY` clause.
+SELECT  sum(quantity) AS sum FROM dealer HAVING sum(quantity) > 10;
 
 Review comment:
   there is an extra space between ```SELECT``` and ```sum```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to