PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak działa Round() w PostgreSQL

W PostgreSQL funkcja round() funkcja służy do zaokrąglania liczby.

Funkcja może działać na dwa sposoby, w zależności od tego, jak z niej korzystasz. Możesz zaokrąglić liczbę do najbliższej liczby całkowitej lub do określonej liczby miejsc po przecinku.

Jest to określane przez liczbę argumentów, które przekazujesz do funkcji podczas jej wywoływania.

Składnia

round() funkcja może być używana na jeden z następujących sposobów:

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

Pierwsza składnia zaokrągla liczbę do najbliższej liczby całkowitej. dp wskazuje double precision .

Druga składnia zaokrągla go do określonej liczby miejsc dziesiętnych. W tym przypadku v to liczba, a s to liczba miejsc dziesiętnych.

Typ zwracany dla tej funkcji jest taki sam jak typ wejściowy.

Przykład pierwszej składni

Oto przykład, który używa pierwszej składni.

SELECT round(13.50); 

Wynik:

14

W tym przypadku ułamki sekund wynoszą 50, więc liczba jest zaokrąglana w górę do najbliższej liczby całkowitej.

Gdyby ułamki sekund były mniejsze niż 50, zostałyby zaokrąglone w dół, a wynik byłby 13.

Oto przykład.

SELECT round(13.49); 

Wynik:

13

Przykład drugiej składni

Oto przykład, który używa drugiej składni.

SELECT round(13.50, 1); 

Wynik:

13,5

W tym przypadku nic nie zostało zaokrąglone w górę, a zero zostało po prostu odrzucone. W takich przypadkach zwraca ten sam wynik, który widzielibyśmy, gdybyśmy użyli trunc() funkcjonować.

Jeśli jednak nieznacznie dostosujemy ułamki sekund, zobaczymy, że wynik jest zaokrąglony.

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

Wynik:

13.45 | 13.44 --------+-------13,5 | 13.4

Należy jednak pamiętać, że wynik jest całkowicie zależny od liczby ułamków sekund określonych w drugim argumencie.

Oto znowu ten sam przykład, ale z podanymi dwoma miejscami po przecinku.

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

Wynik:

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

W tym przypadku nic nie zostało zaokrąglone, ponieważ podałem dokładną liczbę miejsc dziesiętnych, które podałem.

Dodawanie ułamków sekund

Nic nie stoi na przeszkodzie, aby określić więcej ułamków sekund niż w oryginalnej liczbie.

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

Wynik:

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

W tym przypadku po prostu dodaje zero do prawej części ułamka sekundy.

Oto przykład określenia liczby miejsc dziesiętnych, gdy oryginalna liczba nie zawiera żadnych ułamków sekund.

SELECT round(12, 3); 

Wynik:

12 000

Ujemne miejsca dziesiętne

Oto, co się dzieje, gdy drugi argument ma wartość ujemną.

SELECT round(789, -2); 

Wynik:

800

Oto kilka innych.

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

Wynik:

runda | okrągły | okrągły | okrągły | okrągła-------+-------+-------+-------+-------800 | 790 | 500 | 490 | 0

Round() vs Trunc()

W niektórych przypadkach round() funkcja może wydawać się działać w podobny sposób do trunc() . Ale są zupełnie inne.

round() funkcja zaokrągla liczbę. Liczba jest zaokrąglana do najbliższej liczby całkowitej lub do określonej liczby miejsc po przecinku (w zależności od tego, czy podasz jeden argument, czy dwa argumenty).

trunc() z drugiej strony funkcja po prostu obcina liczbę do zera lub do określonego miejsca dziesiętnego. Żadne zaokrąglanie nie jest wykonywane.

Oto przykład pokazujący różnicę.

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

Wynik:

runda | obcięcie --------+-------1,5 | 1.4
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przygotowane oświadczenie na temat Postgresql w Rails

  2. Jakieś wady używania tekstu typu danych do przechowywania ciągów?

  3. Zmniejszanie parametru postgresql.conf na raz

  4. 4 sposoby na wybranie zduplikowanych wierszy w PostgreSQL

  5. Lista kolumn z indeksami w PostgreSQL