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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)