PostGresql 实现四舍五入、小数转换、百分比的用法说明

需求:两个整数相除,保留两位小数并四舍五入,完了转成百分比形式,即4/5=0.80=80%

1.两个整数相除:

idn_dw=> select 4/5;
 ?column?
----------
  0
(1 row)

在sql运算中,"/"意思是相除取整,这样小数部分就会被舍去。

2.用cast将被除数转成小数

idn_dw=> select cast(4 as numeric)/5;
  ?column?
------------------------
 0.80000000000000000000
(1 row)

也可以简化:pg中"::"是转换的意思

idn_dw=> select 4::numeric/5;
  ?column?
------------------------
 0.80000000000000000000
(1 row)

3.四舍五入,保留两位小数

idn_dw=> select round(cast(4 as numeric)/5,2);
 round
-------
 0.80
(1 row)

4.放大100,转成百分比形式

idn_dw=> select concat(round(4::numeric/5,2)*100,'%');
 concat
--------
 80.00%
(1 row)

但是,小数部分不需要,调整一下顺序

idn_dw=> select concat(round(4::numeric/5*100),'%');
 concat
--------
 80%
(1 row)

完事。

补充:使用postgresql的round()四舍五入函数报错

需求:

使用postgresql的round()四舍五入保留两位小数

报错:

HINT: No function matches the given name and argument types. You might

解决方案:

使用cast函数将需要四舍五入的值转为 numeric,转为其他的类型可能会报错

示例:

round(cast(计算结果) as numeric), 2)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Postgresql 数据库转义字符操作

    产生问题 Postgresql数据库运行下面insert命令 insert into mapping_mac_brand(_id,mac,brand) values(777,'D86595','Toy\'s Myth Inc.') 提示下面的警告: Warning: nonstandard use of \' in a string literal HINT: Use '' to write quotes in strings or use the escape string syntax(E.

  • 解决postgresql 数据库 update更新慢的原因

    ;大约140000条数据) 竟然运行了一个小时还没有完成 下面是我的几点解决方案 我的update 语句 是从一个临时表更新值到另一个正式表 因为具体数据需要保密,我就不截图了 只说说大体思路,与方法 1.查看语句是否有问题 复制俩个一模一样的表 和数据 手动执行语句 发现不到一分钟就运行成功了 这样就可以确认语句没有问题 2.查找影响updata的因素 我的第一反应是不是有锁 有锁的情况会导致等待或者死锁 查询锁 select w1.pid as 等待进程, w1.mode as 等待锁模式,

  • 基于PostgreSql 别名区分大小写的问题

    PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a.PRODUCT_ITEM_ID=1 一个很简单的子查询,但是会出错,虽然从语句上看大小写是一致的,但是内部查询中还是使用了小写.PostgreSql对于大写都需要加上双引号的,不然还是视作小

  • postgresql 中round函数的用法说明

    round函数是去小数点,我查过好多方法并不好用,于是有了 round(cast(a/b as numeric), 2) 这个就可以用,要加个cast才可以的 补充:postgresql中to_char和round的混合使用 在postgresql中大家都用过round吧,当遇到小数的时候该如何显示呢?看例子 SELECT to_char(round(127 * 0.1 / 67543,6)*10000,'90.99') 1.88 SELECT to_char(round(127 * 0.1 /

  • postgresql查询自动将大写的名称转换为小写的案例

    我就废话不多说了,大家还是直接看代码吧~ SELECT sum(aa) as "recordNumber" FROM table SELECT sum(aa) as recordNumber FROM table postgis查询字段是将字段字段转为小写,如果需要大写的字符,需要加双引号 补充:Postgresql中表名.列名.用户名大小写问题 注意:是双引号,单引号可能会被解析成普通字符,因而是不识别的字段 highgo=# create table "ExChange&

  • 聊聊PostgreSql table和磁盘文件的映射关系

    在postgresql中 Drop table会不会释放磁盘空间,今日以实操来见证 --2019-01-11 09:49:21 drop table 会不会释放空间 create table tab_todrop(id int,cname varchar(50),remark text); insert into tab_todrop select generate_series(1,10000000),'wx good boy',md5('wx good boy'); insert into

  • PostGresql 实现四舍五入、小数转换、百分比的用法说明

    需求:两个整数相除,保留两位小数并四舍五入,完了转成百分比形式,即4/5=0.80=80% 1.两个整数相除: idn_dw=> select 4/5; ?column? ---------- 0 (1 row) 在sql运算中,"/"意思是相除取整,这样小数部分就会被舍去. 2.用cast将被除数转成小数 idn_dw=> select cast(4 as numeric)/5; ?column? ------------------------ 0.8000000000

  • js中小数转换整数的方法

    JS小数转为整数 floor:下退 Math.floor(12.9999) = 12 ceil:上进 Math.ceil(12.1) = 13; round: 四舍五入 Math.round(12.5) = 13 Math.round(12.4) = 12

  • MapStruct实体间转换的简单用法

    摘要: 在实际项目中,我们经常需要将PO转DTO.DTO转PO等一些实体间的转换.比较出名的有BeanUtil 和ModelMapper等,它们使用简单,但是在稍显复杂的业务场景下力不从心.MapStruct这个插件可以用来处理domin实体类与model类的属性映射,可配置性强. 建立Maven项目 MapStruct需要醒目构建工具(如Maven)支持,如果项目结构不标准,可能无法生成对应的转换类.这里我使用Maven构建工程. <properties> <org.mapstruct

  • Postgresql中LIKE和ILIKE操作符的用法详解

    LIKE和ILIKE操作符可以模糊匹配字符串,LIKE是一般用法,ILIKE匹配时则不区分字符串的大小写. 它们需要结合通配符使用,下面介绍两种常用的通配符. %:百分号用于匹配字符串序列,可匹配任意组合: _:下划线用于匹配任何单一字符. 举例来说明LIKE和ILIKE操作符的区别. 先创建一张数据表table1,包含两列:id列和name列,代码如下: create table table1(id int, name varchar); insert into table1 values(1

  • postgresql中wal_level的三个参数用法说明

    wal_level中有三个主要的参数:minimal.archive和hot_standby 1.minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用). 2.archive是增加wal归档所需的日志(最常用). 3.hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到. 补充:postgresql WAL相关参数 配置文件 # - Settings - wal_level = minimal # minimal, replica

  • Postgresql 跨库同步表及postgres_fdw的用法说明

    postgres_fdw模块 PostgreSQL 9.3 add postgres_fdw extension for accessing remote tables PostgreSQL 9.3新增了一个postgres_fdw模块, 已经整合在源码包中. 用于创建postgres外部表. 注:db_des为目标库,developer_month_orders_data为表名.意思就是从查询库a中建立同名FOREIGN关联表, 可以查询目标库中的数据.以下命令在需要建立的关联库中执行. 目标

  • postgresql 中的几个 timeout参数 用法说明

    今天整理了下 postgresql 几个 timeout 参数 select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat

  • postgresql 中的加密扩展插件pgcrypto用法说明

    近期测试了一下postgresql的加密扩展插件pgcrypto的aes加密 安装加密扩展插件:pgcrypto 在主节点上安装 create extension pgcrypto; aes加解密函数简单介绍 encrypt(data bytea, key bytea, type text) --加密 decrypt(data bytea, key bytea, type text) --解密 data 是需要加密的数据:type 用于指定加密方法 ASE方式加密: select encrypt

  • 深入解读PostgreSQL中的序列及其相关函数的用法

    一.简介 序列对象(也叫序列生成器)就是用CREATE SEQUENCE 创建的特殊的单行表.一个序列对象通常用于为行或者表生成唯一的标识符. 二.创建序列 方法一:直接在表中指定字段类型为serial 类型 david=# create table tbl_xulie ( david(# id serial, david(# name text); NOTICE: CREATE TABLE will create implicit sequence "tbl_xulie_id_seq"

  • 如何编写一个小数转换分数的函数?

    Public Function XtoF(str As Currency, Optional fenm As Integer = 32) As String ' 只限于整除分数.  Dim Cfm As Currency  Dim cfmmod As Integer  On Error GoTo Erroreof Cfm = 1 / fenm  XtoF = ""  If str = 0 Then XtoF = "": Exit Function Dim point

随机推荐