sql - 如何获得百分比值?PostgreSQL
问题描述
这是我的代码:
select
referido,
count(*) filter (where extract(month from fec_alta) = 3) ::float as Marzo
from usuarios
where fec_alta between '2020-03-01' and '2020-04-30'
group by referido;
现在我需要将第二行除以 76(它是列的总和)
所以我有这个输出
march
true 60
false 16
我需要这个输出
march
true 78,9 %
false 21,1 %
解决方案
只需使用窗口函数:
select referido,
(count(*) filter (where extract(month from fec_alta) = 3)::float /
sum(count(*) filter (where extract(month from fec_alta) = 3)) over ()
) as Marzo
from usuarios
where fec_alta between '2020-03-01' and '2020-04-30'
group by referido;
推荐阅读
- node.js - 带有动态参数的 NestJS 注释
- openshift - 如何将openshift容器平台企业安装为一体式安装
- python - 将曲线样条拟合到 3D 点云
- sql - 使用 SQL 打印来自两个不同表的数据,但使用第三个表作为两者之间的链接
- java - 我试图在 RecyclerView 中接收一个包含数组的列表并得到错误:
- docker - docker run 只显示最后一个 CMD?
- sql-server - 如果存在,则将 csv 文件插入 mssql,然后使用 apache nifi 更新
- python - 仅自定义一个列管理模板
- python - 关于良好的编码实践,“函数和方法结束时无用的返回”是什么意思?
- reactjs - aws cognito - 如何在前端的正确时间保持 id 令牌刷新