An aggregate symbol represents an aggregate function in the SELECT or HAVING clauses. It extends ExpressionSymbol as they have many things in common. The aggregate symbol is typically something like SUM(stock.quantity * 2)
. There are five supported aggregate functions: COUNT, SUM, AVG, MIN, and MAX. Aggregate functions contain an expression - this data is managed by the super class, ExpressionSymbol. Aggregate functions may also specify a DISTINCT flag to indicate that duplicates should be ignored. The DISTINCT flag may be set for all five aggregate functions but is ignored for the computation of MIN and MAX. One special use of an aggregate symbol is for the symbol COUNT(*)
. The * expression is encoded by setting the expression to null. This may ONLY be used with the COUNT function.
The type of an aggregate symbol depends on the function and the type of the underlying expression. The type of a COUNT function is ALWAYS integer. MIN and MAX functions take the type of their contained expression. AVG and SUM vary depending on the type of the expression. If the expression is of a type other than biginteger, the aggregate function returns type long. For the case of biginteger, the aggregate function returns type biginteger. Similarly, all floating point expressions not of type bigdecimal return type double and bigdecimal maps to bigdecimal.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|