sql >> Databáze >  >> RDS >> PostgreSQL

Jak Round() funguje v PostgreSQL

V PostgreSQL, round() funkce se používá pro zaokrouhlení čísla.

Funkce může fungovat jedním ze dvou způsobů v závislosti na tom, jak ji používáte. Číslo můžete zaokrouhlit na nejbližší celé číslo nebo na zadaný počet desetinných míst.

To je určeno počtem argumentů, které předáte funkci, když ji voláte.

Syntaxe

round() funkci lze použít jedním z následujících způsobů:

round(dp or numeric)
round(v numeric, s int) 

První syntaxe zaokrouhlí číslo na nejbližší celé číslo. dp označuje double precision .

Druhá syntaxe jej zaokrouhlí na zadaný počet desetinných míst. V tomto případě v je číslo a s je počet desetinných míst.

Návratový typ této funkce je stejný jako typ vstupu.

Příklad první syntaxe

Zde je příklad, který používá první syntaxi.

SELECT round(13.50); 

Výsledek:

14

V tomto případě jsou zlomkové sekundy 50, takže číslo je zaokrouhleno nahoru na nejbližší celé číslo.

Pokud by zlomkové sekundy byly menší než 50, byly by zaokrouhleny dolů a výsledek by byl 13.

Zde je příklad.

SELECT round(13.49); 

Výsledek:

13

Příklad druhé syntaxe

Zde je příklad, který používá druhou syntaxi.

SELECT round(13.50, 1); 

Výsledek:

13.5

V tomto případě se nic nezaokrouhlovalo a nula se prostě vypustila. V takových případech vrací stejný výsledek, jaký bychom viděli, kdybychom použili trunc() funkce.

Pokud však nepatrně upravíme zlomkové sekundy, uvidíme, že výsledek je zaokrouhlený.

SELECT 
  round(13.45, 1) AS "13.45",
  round(13.44, 1) AS "13.44"; 

Výsledek:

13:45 | 13,44-------+--------13,5 | 13.4

Je však důležité si uvědomit, že výsledek je zcela závislý na tom, kolik zlomkových sekund zadáte ve druhém argumentu.

Zde je znovu stejný příklad, ale se dvěma desetinnými místy.

SELECT 
  round(13.45, 2) AS "13.45",
  round(13.44, 2) AS "13.44"; 

Výsledek:

13:45 | 13.44-------+--------13.45 | 13:44

V tomto případě nebylo nic zaokrouhleno, protože jsem uvedl přesný počet desetinných míst, který jsem uvedl.

Přidání zlomků sekund

Nic vám nebrání zadat více zlomkových sekund, než je v původním počtu.

SELECT 
  round(13.45, 3) AS "13.45",
  round(13.44, 3) AS "13.44"; 

Výsledek:

13:45 | 13,44---------+--------13,450 | 13 440

V tomto případě jednoduše přidá nulu k pravé části zlomkových sekund.

Zde je příklad zadání počtu desetinných míst, když původní číslo nezahrnuje žádné zlomky sekund.

SELECT round(12, 3); 

Výsledek:

12 000

Záporná desetinná místa

Zde je to, co se stane, když je druhým argumentem záporná hodnota.

SELECT round(789, -2); 

Výsledek:

800

Zde jsou některé další.

SELECT 
  round(789, -2),
  round(789, -1),
  round(489, -2),
  round(489, -1),
  round(489, -3); 

Výsledek:

Round() vs Trunc()

V některých případech round() se může zdát, že funkce funguje podobně jako trunc() . Ale jsou docela jiné.

round() funkce zaokrouhlí číslo. Číslo je zaokrouhleno na nejbližší celé číslo nebo na zadaný počet desetinných míst (v závislosti na tom, zda mu zadáte jeden argument nebo dva argumenty).

trunc() funkce na druhé straně jednoduše zkrátí číslo směrem k nule nebo na zadané desetinné místo. Žádné zaokrouhlování se neprovádí.

Zde je příklad, který demonstruje rozdíl.

SELECT 
  round(1.49, 1),
  trunc(1.49, 1); 

Výsledek:


  1. Výběr hodnot z proměnné tabulky Oracle / pole?

  2. Jednoduché funkce SQL Serveru k řešení problémů ve skutečném světě

  3. Android-setPeriodic for JobScheduler nebude fungovat

  4. Rekurzivní CTE spojuje pole s rodiči z libovolného bodu