postgresql中两张表的聚合函数合并到一列或一行,做除法,并保留两位小数

--两张表的无关数据合并到一张表

SELECT A.name, B.name FROM (select o.name, row_number() over(order by name) from tb_org as o) A   FULL JOIN  (select r.name, row_number() over(order by r.name) from tb_region as r) B ON A.row_number = B.row_number;

这里是利用了每张表必然有行数,pg在windows下使用row_number()时,必须与 over()一起使用,也就是排序方式,由于少的一列行数为null了,后面的都是乱序

--两张表的聚合函数合并到一列 select count(name) c1 from tb_org union all select count(name) c2 from tb_region

--两张表的聚合函数合并到一行

select * from (select count(name)from tb_org) A,(select count(name) from tb_region ) B

select *,round(c1::numeric /c2,2) from (select count(name) c1 from tb_org) A,(select count(name) c2 from tb_region ) B

或者利用行数 row_number() SELECT count(A.name) c1, count(B.name) c2 FROM (select o.name, row_number() over(order by name) from tb_org as o) A   FULL JOIN  (select r.name, row_number() over(order by r.name) from tb_region as r) B ON A.row_number = B.row_number;

--两张无关表的聚合函数,做除法,并保留两位小数 SELECT count(A.name) c1, count(B.name) c2, round(count(A.name)::numeric /count(B.name),2) c3 FROM (select o.name, row_number() over(order by name) from tb_org as o) A   FULL JOIN  (select r.name, row_number() over(order by r.name) from tb_region as r) B ON A.row_number = B.row_number;

posted @   木头左  阅读(152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示