Oracle® Big Data Discovery Cloud Service EQL Reference
Contents
Page 24 of 114

HAVING clause

The HAVING clause is used to filter output records.

The syntax of the HAVING clause is as follows:
HAVING <BooleanExpression>
You can use the HAVING clause with any Boolean expression, such as:
  • Numeric and string value comparison: {= , <>, <, <=, >, >=}
  • Null value evaluation: <attribute> IS {NULL, NOT NULL, EMPTY, NOT EMPTY}
  • Set operations: such as SUBSET and IS_MEMBER_OF
  • Grouping keys of the source statement: <attribute-list> IN <source-statement>
In the following example, the results include only sales representatives who generated at least $10,000:
RETURN Reps AS
SELECT SUM(Amount) AS SalesTotal
FROM SaleState
GROUP BY SalesRep
HAVING SalesTotal > 10000
Note that HAVING clauses may refer only to attributes defined in the same statement (such as aliased attributes defined by a SELECT clause). For example, this is an invalid statement:
// Invalid because "Price" is not defined in the statement (i.e., Price is a collection attribute).
Return results AS
SELECT SUM(Price) AS TotalPrices
FROM SaleState
GROUP BY WineType
HAVING Price > 100
The invalid statement example would return this error message:
In statement "results": In HAVING clause: Local statement attribute "Price" is not in scope 
To correct the error, replace the local statement attribute (Price) with an attribute defined in the statement (TotalPrices):
// Valid because "TotalPrices" is defined in the statement.
Return results AS
SELECT SUM(Price) AS TotalPrices
FROM SaleState
GROUP BY WineType
HAVING TotalPrices > 100