FLOOR - предыдущее целое число

Как на счет ближайшего целого числа, меньшего или равного какого-то значения?

Для этого тоже есть отдельная функция - FLOOR:

SELECT floor (2.1) AS "floor(2.1)",
       ceil (2.1) AS "ceil(2.1)",
       floor (2.6) AS "floor(2.6)",
       ceil (2.6) AS "ceil(2.6)"
# floor(2.1) ceil(2.1) floor(2.6) ceil(2.6)
1 2 3 2 3

Если вызвать функцию от целого числа, то получим это же самое число:

SELECT floor (2) AS "floor(2)"
# floor(2)
1 2

При вызове от отрицательного числа функция по прежнему возвращает ближейшее меньшее целое число:

SELECT floor (-2.1) AS "floor(-2.1)",
       ceil (-2.1) AS "ceil(-2.1)",
       floor (-2.6) AS "floor(-2.6)",
       ceil (-2.6) AS "ceil(-2.6)"
# floor(-2.1) ceil(-2.1) floor(-2.6) ceil(-2.6)
1 -3 -2 -3 -2

Сравнение TRUNC и FLOOR

На первый взгляд можно подумать, что функции TRUNC и FLOOR ведут себя одинаково. TRUNC отбрасывает дробную часть, FLOOR - округляет в меньшую сторону.

SELECT floor(2.4), trunc (2.4)
# floor trunc
1 2 2

Различия начинают проявляться при работе с отрицательными числами:

SELECT floor(-2.4), trunc (-2.4)
# floor trunc
1 -3 -2

8.8 CEIL - следующее целое число

8.10 GREATEST - определение большего числа