sql >> Database >  >> RDS >> PostgreSQL

Hoe rond je een gemiddelde af op 2 decimalen in PostgreSQL?

PostgreSQL definieert round(double precision, integer) niet . Om redenen @Mike Sherrill 'Cat Recall' legt uit in de opmerkingen, de versie van de ronde die een precisie vereist, is alleen beschikbaar voor numeric .

regress=> SELECT round( float8 '3.1415927', 2 );
ERROR:  function round(double precision, integer) does not exist

regress=> \df *round*
                           List of functions
   Schema   |  Name  | Result data type | Argument data types |  Type  
------------+--------+------------------+---------------------+--------
 pg_catalog | dround | double precision | double precision    | normal
 pg_catalog | round  | double precision | double precision    | normal
 pg_catalog | round  | numeric          | numeric             | normal
 pg_catalog | round  | numeric          | numeric, integer    | normal
(4 rows)

regress=> SELECT round( CAST(float8 '3.1415927' as numeric), 2);
 round 
-------
  3.14
(1 row)

(Houd er in het bovenstaande rekening mee dat float8 is slechts een verkorte alias voor double precision . Je kunt zien dat PostgreSQL het uitbreidt in de uitvoer).

U moet de af te ronden waarde casten naar numeric om de twee-argumentvorm van round te gebruiken . Voeg gewoon ::numeric toe voor de steno-cast, zoals round(val::numeric,2) .

Als je formatteert voor weergave aan de gebruiker, gebruik dan geen round . Gebruik to_char (zie:gegevenstype opmaakfuncties in de handleiding), waarmee u een formaat kunt specificeren en u een text krijgt resultaat dat niet wordt beïnvloed door de gekheid die uw klanttaal zou kunnen veroorzaken met numeric waarden. Bijvoorbeeld:

regress=> SELECT to_char(float8 '3.1415927', 'FM999999999.00');
    to_char    
---------------
 3.14
(1 row)

to_char zal getallen voor u afronden als onderdeel van de opmaak. De FM prefix vertelt to_char dat u geen opvulling met voorloopspaties wilt.



  1. Oracle-tekst die ontsnapt met accolades en jokertekens

  2. Hoe MAAND() werkt in MariaDB

  3. Oracle SQL-syntaxis:ID tussen aanhalingstekens

  4. Oracle JDeveloper 12c gebruiken met Oracle Database 12c op Oracle Cloud Platform, deel 1