Números

ROUND

Redondea un número a un entero o al número de decimales que necesites.

Sintaxis

ROUND(<número>)
ROUND(<número>, <decimales>)

Sin el segundo argumento redondea a un entero; con él, al número de cifras decimales indicado. Un número negativo de decimales redondea a la izquierda de la coma: a decenas, centenas, millares.

Datos para los ejemplos

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

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

A centésimas, a entero y a centenas
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
El ticket medio con dos decimales
SELECT AVG(amount) AS average,
ROUND(AVG(amount), 2) AS rounded
FROM orders;
averagerounded
102.0980000000000000102.10
Una mitad, dos resultados distintos
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

En numeric, la mitad se redondea alejándose de cero; en double precision, al par más cercano.

Ten en cuenta

ROUND(x, 2) solo existe para el tipo numeric. Si x es double precision (por ejemplo, la media de una columna de tipo real), obtendrás function round(double precision, integer) does not exist. La solución es convertir el tipo: ROUND(x::numeric, 2).

En double precision, las mitades se redondean al número par más cercano: ROUND(2.5::float8) da 2 y ROUND(3.5::float8) da 4. Para dinero, usa numeric.

Funciones relacionadas

Más detalles en el curso