sql >> Database >  >> RDS >> PostgreSQL

Hoe Round() werkt in PostgreSQL

In PostgreSQL is de round() functie wordt gebruikt voor het afronden van een getal.

De functie kan op twee manieren werken, afhankelijk van hoe u hem gebruikt. U kunt het getal afronden op het dichtstbijzijnde gehele getal of op een bepaald aantal decimalen.

Dit wordt bepaald door het aantal argumenten dat u aan de functie doorgeeft wanneer u deze aanroept.

Syntaxis

De round() functie kan op een van de volgende manieren worden gebruikt:

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

De eerste syntaxis rondt het getal af op het dichtstbijzijnde gehele getal. De dp geeft double precision . aan .

De tweede syntaxis rondt het af op een bepaald aantal decimalen. In dit geval v is het nummer, en s is het aantal decimalen.

Het retourtype voor deze functie is hetzelfde als het invoertype.

Voorbeeld van eerste syntaxis

Hier is een voorbeeld dat de eerste syntaxis gebruikt.

SELECT round(13.50); 

Resultaat:

14

In dit geval zijn de fractionele seconden 50 en daarom wordt het getal naar boven afgerond naar het dichtstbijzijnde gehele getal.

Als de fractionele seconden minder dan 50 waren, zou het naar beneden zijn afgerond en zou het resultaat 13 zijn.

Hier is een voorbeeld daarvan.

SELECT round(13.49); 

Resultaat:

13

Voorbeeld van tweede syntaxis

Hier is een voorbeeld dat de tweede syntaxis gebruikt.

SELECT round(13.50, 1); 

Resultaat:

13.5

In dit geval werd er niets naar boven afgerond en werd nul gewoon weggelaten. In dergelijke gevallen retourneert het hetzelfde resultaat dat we zouden hebben gezien als we de trunc() hadden gebruikt functie.

Als we de fractionele seconden echter iets aanpassen, zien we dat het resultaat wordt afgerond.

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

Resultaat:

13.45 | 13.44-------+-------13.5 | 13.4

Het is echter belangrijk op te merken dat het resultaat volledig afhankelijk is van het aantal fractionele seconden dat u opgeeft in het tweede argument.

Hier is hetzelfde voorbeeld opnieuw, maar met twee cijfers achter de komma.

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

Resultaat:

13.45 | 13.44-------+-------13.45 | 13.44

In dit geval is er niets afgerond, omdat ik het exacte aantal decimalen heb opgegeven dat ik heb opgegeven.

Fractionele seconden toevoegen

Niets houdt u tegen om meer fracties van seconden op te geven dan in het oorspronkelijke getal.

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

Resultaat:

13.45 | 13.44--------+--------13.450 | 13.440

In dit geval voegt het gewoon een nul toe aan het rechterdeel van de fractionele seconden.

Hier is een voorbeeld van het specificeren van een aantal decimalen wanneer het oorspronkelijke getal geen fracties van seconden bevat.

SELECT round(12, 3); 

Resultaat:

12.000

Negatieve decimalen

Dit is wat er gebeurt als het tweede argument een negatieve waarde is.

SELECT round(789, -2); 

Resultaat:

800

Hier zijn er nog meer.

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

Resultaat:

ronde | ronde | ronde | ronde | rond-------+-------+-------+-------+-------800 | 790 | 500 | 490 | 0

Ronde() vs Trunc()

In sommige gevallen kan de round() functie lijkt op een vergelijkbare manier te werken als trunc() . Maar ze zijn heel anders.

De round() functie rondt het getal af. Het getal wordt afgerond op het dichtstbijzijnde gehele getal of op het opgegeven aantal decimalen (afhankelijk van of je het één argument of twee argumenten geeft).

De trunc() functie daarentegen kapt het getal eenvoudig af naar nul of naar de opgegeven decimale plaats. Er wordt niet afgerond.

Hier is een voorbeeld om het verschil aan te tonen.

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

Resultaat:

ronde | trunc-------+-------1.5 | 1.4
  1. MAAND() Voorbeelden – MySQL

  2. Percona XtraDB-cluster bewaken - belangrijkste meetgegevens

  3. De Unix-tijdstempel retourneren in SQL Server (T-SQL)

  4. toegang geweigerd voor laadgegevensbestand in MySQL