sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur avrundar man ett genomsnitt till 2 decimaler i PostgreSQL?

PostgreSQL definierar inte round(double precision, integer) . Av anledningar @Mike Sherrill 'Cat Recall' förklarar i kommentarerna, versionen av rundan som tar en precision är endast tillgänglig för 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)

(Observera att float8 är bara ett stenografisk alias för double precision . Du kan se att PostgreSQL expanderar den i utdata).

Du måste casta värdet för att avrundas till numeric att använda tvåargumentformen round . Lägg bara till ::numeric för stenografin, som round(val::numeric,2) .

Om du formaterar för visning för användaren, använd inte round . Använd to_char (se:formateringsfunktioner för datatyp i manualen), som låter dig specificera ett format och ger dig en text resultat som inte påverkas av de konstigheter ditt klientspråk än kan göra med numeric värden. Till exempel:

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

to_char kommer att avrunda siffror för dig som en del av formateringen. FM prefix talar om för to_char att du inte vill ha någon utfyllnad med inledande mellanslag.



  1. Producera ett `DataSource`-objekt för Postgres JDBC, programmatiskt

  2. Vad är realtidsappar?

  3. Fråga data från XML

  4. Infoga i MySQL från PHP (jQuery/AJAX)