moar tables

This commit is contained in:
Gavin King 2022-01-01 22:53:25 +01:00
parent a61ffbfea7
commit 9edcf6b0c0
1 changed files with 28 additions and 16 deletions

View File

@ -1624,26 +1624,27 @@ It's no longer necessary to remove duplicate results explicitly, and `distinct`
It's common to have aggregate functions like `count()`, `sum()`, and `max()` in a select list.
Aggregate functions are special functions that reduce the size of the result set.
|===
| Aggregate function | Result type
The standard aggregate functions defined in both ANSI SQL and JPQL are:
| `count()`, including `count(distinct)`, `count(all)`, and `count(*)` | `Long`
| `avg()` | `Double`
| `min()` | Same as the argument type
| `max()` | Same as the argument type
| `sum()` | Depends on the type of the values being summed
| `any()` | `Boolean`
| `every()` | `Boolean`
|===
| Aggregate function | Argument type | Result type
| `count()`, including `count(distinct)`, `count(all)`, and `count(*)` | Any | `Long`
| `avg()` | Any numeric type | `Double`
| `min()` | Any numeric type, or string | Same as the argument type
| `max()` | Any numeric type, or string | Same as the argument type
| `sum()` | Any numeric type | See table below
|===
In the case of `sum()`:
In the case of `sum()`, the rules for assigning a result type are:
|===
| Argument type | Result type
* For integral values (other than `BigInteger`), the result type is `Long`.
* For floating point values (other than `BigDecimal`) the result type is `Double`.
* For `BigInteger` values, the result type is `BigInteger`.
* For `BigDecimal` values, the result type is `BigDecimal`.
Aggregate functions often appear in queries with a `group by` clause, as described <<hql-group-by,below>>.
| Any integral numeric type except `BigInteger` | `Long`
| Any floating point numeric type | `Double`
| `BigInteger` | `BigInteger`
| `BigDecimal` | `BigDecimal`
|===
[[hql-aggregate-functions-example]]
//.Aggregate function examples
@ -1654,6 +1655,17 @@ include::{sourcedir}/HQLTest.java[tags=hql-aggregate-functions-example]
----
====
HQL defines the two additional aggregate functions which accept a logical predicate as an argument, for example, `every(p.amount < 1000.0)`.
|===
| Aggregate function | Argument type | Result type
| `any()` | Logical predicate | `Boolean`
| `every()` | Logical predicate | `Boolean`
|===
Aggregate functions often appear in queries with a `group by` clause, as described <<hql-group-by,below>>.
[[hql-aggregate-functions-filter]]
==== `filter`