Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения:
Databricks SQL
Databricks Runtime 10.4 LTS и выше
Возвращает наибольшее число не больше expr с округлением до targetScale цифр после запятой.
Синтаксис
floor(expr [, targetScale])
Аргументы
-
expr: выражение, значением которого является число. -
targetScale: необязательный литерал INTEGER больше-38, указывающий количество цифр после запятой для округления в меньшую сторону.
Возвраты
Если targetScale не указан:
- Если параметр
exprимеет значениеDECIMAL(p, s), возвращаетсяDECIMAL(p - s + 1, 0). - Во всех остальных случаях возвращается значение типа BIGINT.
Если указан targetScale, а expr имеет следующее значение:
TINYINTВозвращает
DECIMAL(p, 0)сp = max(3, -targetScale + 1).SMALLINTВозвращает
DECIMAL(p, 0)сp = max(5, -targetScale + 1).INTEGERВозвращает
DECIMAL(p, 0)сp = max(10, -targetScale + 1)).BIGINTВозвращает
DECIMAL(p, 0)сp = max(20, -targetScale + 1)).FLOATВозвращает
DECIMAL(p, s)сp = max(14, -targetScale + 1))иs = min(7, max(0, targetScale)).DOUBLEВозвращает
DECIMAL(p, s)сp = max(30, -targetScale + 1))иs = min(15, max(0, targetScale)).DECIMAL(p_in, s_in)Возвращает
DECIMAL(p, s)сp = max(p_in - s_in + 1, -targetScale + 1))иs = min(s_in, max(0, targetScale)).
Если targetScale принимает отрицательное значение, происходит округление до -targetScale порядка.
Значение targetScale по умолчанию равно 0, что округляется в меньшую сторону до следующего целого числа по убыванию.
Если targetScale указан с целым типом входных данных, Azure Databricks вызывает ARITHMETIC_OVERFLOW если результат переполнен типом вывода.
Предупреждение
В Databricks Runtime, если параметр false, переполнение не приводит к ошибке, но "заворачивает" результат.
Распространенные условия ошибки
Примеры
> SELECT floor(-0.1);
-1
> SELECT floor(5);
5
> SELECT floor(3345.1, -2);
3300
> SELECT floor(-12.345, 1);
-12.4
-- Rounding -128 to the nearest 10 produces -130, which overflows TINYINT.
> SELECT floor(cast(-128 AS TINYINT), -1);
Error: ARITHMETIC_OVERFLOW