4.8.4 Агрегированные функции в предложении SELECT Результат запроса
можетбыть результатом применения агрегатной функции к выражению пути.
В предложении SELECT запроса могут использоваться следующие агрегатные функции: AVG, COUNT, MAX, MIN, SUM.
Для всех агрегатных функций, кроме COUNT, выражение пути, являющееся аргументом для агрегатной функции, должно заканчиваться в поле состояния.Аргумент выражения пути к COUNT может заканчиваться либо полем состояния, либо полем ассоциации, либо аргумент COUNT может быть переменной-идентификатором.
Аргументы функций SUM и AVG должны быть числовыми.Аргументы функций MAX и MIN должны соответствовать упорядочиваемым типам полей состояния (т. Е. Числовым типам, строковым типам, типам символов или типам дат).
Тип Java, содержащийся в результате запросаиспользование агрегатной функции выглядит следующим образом:
- COUNT возвращает Long.
- MAX, MIN возвращает тип поля состояния, к которому они применяются.
- AVG возвращает Double.
- SUM возвращает Long применительно к полям состояний целых типов (кроме BigInteger);Двойной при применении к полям состояний типов с плавающей точкой;BigInteger применительно к полям состояний типа BigInteger;и BigDecimal при применении к полям состояний типа BigDecimal.
Если используется SUM, AVG, MAX или MIN, и нет значений, к которым может быть применена агрегатная функция, результатагрегатная функция равна NULL.
Если используется COUNT, и нет значений, к которым можно применить COUNT, результат агрегатной функции равен 0.
Аргумент для агрегатной функцииможет предшествовать ключевое слово DISTINCT, чтобы указать, что повторные значения должны быть удалены до применения агрегатной функции.
Нулевые значения удаляются до применения агрегатной функции, независимо от того, указано ли ключевое слово DISTINCT.