Числа

ROUND

Округлює число до цілого або до потрібної кількості знаків після коми.

Синтаксис

ROUND(<число>)
ROUND(<число>, <знаки>)

Без другого аргументу округлює до цілого, з ним — до вказаної кількості цифр після коми. Від'ємна кількість знаків округлює ліворуч від коми: до десятків, сотень, тисяч.

Дані для прикладів

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

До сотих, до цілих і до сотень
SELECT ROUND(19.857, 2) AS two_decimals,
ROUND(19.857) AS to_integer,
ROUND(1234.5, -2) AS to_hundreds;
two_decimalsto_integerto_hundreds
19.86201200
Середній чек з двома знаками
SELECT AVG(amount) AS average,
ROUND(AVG(amount), 2) AS rounded
FROM orders;
averagerounded
102.0980000000000000102.10
Одна половинка — два різні результати
SELECT ROUND(2.5) AS numeric_half,
ROUND(2.5::float8) AS float_half,
ROUND(3.5::float8) AS float_half_2;
numeric_halffloat_halffloat_half_2
324

Для numeric половинка округлюється від нуля, а для double precision — до найближчого парного.

Зверни увагу

ROUND(x, 2) існує лише для типу numeric. Якщо x — double precision (наприклад, середнє зі стовпця типу real), отримаєш помилку function round(double precision, integer) does not exist. Рішення — привести тип: ROUND(x::numeric, 2).

Для double precision половинки округлюються до парного: ROUND(2.5::float8) дає 2, а ROUND(3.5::float8) — 4. Для грошей використовуй numeric.

Схожі функції

Детально в курсі