sql - PostgreSQL - SUM 真假列和按月分组,给我一个百分比
问题描述
我有一个带有 id 的表和一些我已经过滤的其他数据。首先我想知道我如何转换成一个输出的新表
select A, B from Table
where B between '2020-03-01' and '2020-04-30'
order by B ASC
;
我有这样的输出:
A B
1 12-03-2000
0 12-04-2000
1 03-02-2000
1 04-02-2000
0 02-05-2001
我的兴趣只集中在 2 个月我想知道百分比代表每个月真假(分别)的总和
解决方案
我认为您希望列中的月份具有每个月的真假百分比。使用条件聚合:
select A,
count(*) filter (where month(b) = 3) * 1.0 / sum(count(*)) filter (where extract(month from b) = 3) as march,
count(*) filter (where extract(month from b) = 4) * 1.0 / sum(count(*)) filter (where month(b) = 4) as april
from Table
where B between '2020-03-01' and '2020-04-30'
group by A;
推荐阅读
- python - 错误:使用 17%-21% 时超出内存限制,根据 psutils
- python - TensorFlow 2.0 InaccessibleTensorError
- python - 股票时间序列数据的斐波那契回撤
- reactjs - 将变量传递给突变组件 - react-apollo
- excel - 生成的公式会出错,但手动输入不会
- c# - 如何在通配符中使用 (char)167 或 §。C# 查找和替换
- c# - 我收到此错误 (CS0161),为什么会收到此错误?
- c++ - 后跟 '::' 的名称必须是类或命名空间错误,即使 '::' 跟在类名之后
- firebase - firebase ui 手机身份验证活动泄漏
- javascript - 是否可以在 axios 拦截器中访问 vue 实例?