PostgreSQL数据库中,两个integer类型数据,如何处理为百分比形式
有表 student ,其中id字段为character类型,total和complete字段为integer型
total为总任务量,complete为完成任务量,当前诉求,求出完成率,保留一位小数
一,直接相除 complete/total,可以看到结果为0
这里为0,因为两个字段均为integer型,会按整数相除处理。
二,使用round函数
round(complete/total, 1)
这里结果与操作一类似,只是加了小数点。因为round只是对
round(
complete/total
, 1)
中输入的原值做格式化处理,而原值
complete/total
依然遵循两个integer数据相除的原则。
查看round后的结果列,结果值类型为 numeric,尝试将除数或被除数设置为numeric类型
三、除数小数化 complete::numeric,
round(complete::numeric/total, 3)
这里的操作,将complete做了小数化,这里,可以同时将total做小数化,效果相同
四,百分比形式
如果要将结果展示为百分比形式,比如0.125要展示为12.5%
这里做了一个操作
round(complete
*100
::numeric/total, 1)
||'%'
-
除数complete 乘以
100
-
round小数保留3位修改为了
1
位
-
round函数外拼接
|| '%'
五、除数为0处理
如果除数total有为0的情况,complete/total 会报错,使用case when 关键字
select complete, total,
(case when total=0 then '/' else round(complete*100::numeric/total, 1)||'%' end) as complete_rate
from student;
如此,除数为0的问题也成功解决。
PostgreSQL数据库中,两个integer类型数据,如何处理为百分比形式有表 student ,其中id字段为character类型,total和complete字段为integer型total为总任务量,complete为完成任务量,当前诉求,求出完成率,保留一位小数操作尝试一,直接相除 complete/total,可以看到结果为0这里为0,因为两个字段均为integer型,会按整数相除处理。二,使用round函数 round(complete/total, 1..
pg
数据库
文档手册,
PostgreSQL
是一个自由的对象-关系
数据库
服务器(
数据库
管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码
数据库
系统(比如 My
SQL
和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft
SQL
Server)之外的另一种选择。
PostgreSQL
的特性覆盖了
SQL
-2/
SQL
-92 和
SQL
-3/
SQL
-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持。
从技术角度来讲,
PostgreSQL
采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由
数据库
服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,E
SQL
等, 同时也要指出的是,
PostgreSQL
对接口的支持也是非常丰富的,几乎支持所有类型的
数据库
客户端接口。这一点也可以说是
PostgreSQL
一大优点。
两种方法:自行
计算
和使用
postgresql
内置函数
计算
1.1. 使用(row -1 )/ (count - 1)方式,即该数所在位置(从小到大排列)/ 该列总个数
首先,使用row_num函数从小到大排列:
select * from( select row_num() over(partition by id字段 order by
计算
字段)rn,* from 表名);
然后,
计算
总数:
select count(*) as cont f
PostgreSQL
9.4版本之后很容易对一组值
计算
百分位数,主要是用有序集合的聚集函数percentile_cont 和 percentile_disc。
这两个函数类似,但对合并结果有些差异:
percentile_disc 返回最接近请求百分位的离散值。
percentile_cont 返回基于分布的多个值的连续值(插值)。更精确,包括两个输入值直接的数(带小数)。
下面通过示例进行讲解,首先我们准备一个示例表和数据。
create table thing (
value int
select test,Convert(nvarchar(20),(Convert(decimal(18,2),count(1) * 100.0 /
(select count(1) from Table where CreatedTime >=DATEADD(MONTH,-1,GETDATE())))))+'%'
from Table group by test
因为.49和“%”是通过字符串拼接的形式合成的,Oracle中存在一个隐形类型转换的问题,在拼接的过程中小数自动转成字符类型,相当于调用了to_char函数。
在类型隐形转换开始前先把小数转换成字符类型就不回出现这个问题了。
例如:select to_char(0.12) ||’%’ from dual;
解决方法:select to_char(0.12,‘fm9999990.999...
PG
数据库
的存储文件包括数据文件、日志文件和配置文件。
1. 数据文件:
PG
数据库
使用数据文件来存储表、索引和其他
数据库
对象的实际数据。每个
数据库
都有一个主数据文件,通常命名为`base/<
数据库
OID>`。此外,每个表和索引都有一个对应的文件,命名为`<表OID>`或`<索引OID>`。
2. 日志文件:
PG
数据库
使用日志文件来记录对
数据库
的所有更改。日志文件分为两种类型:事务日志文件(WAL)和归档日志文件。事务日志文件记录了已提交的事务更改,以便在
数据库
崩溃时进行恢复。归档日志文件用于备份和恢复操作。
3. 配置文件:
PG
数据库
的配置文件包含了
数据库
实例的各种配置参数,如监听地址、端口号、内存设置等。配置文件通常命名为`
postgresql
.conf`,位于
数据库
安装目录下的`data`子目录中。
这些存储文件是
PG
数据库
运行和管理的关键组成部分。请注意,在不同的操作系统和
PG
版本中,文件的具体命名和存放位置可能会有所不同。
Consider defining a bean of type ‘org.springframework.http.codec.ServerCodecConfigurer‘ in your conf
Kangrant: