这是我的“完成”表
| 姓名|地位|部门|
| - ------|- ------|- ------|
| 约翰|已完成|销售额|
| 戴夫|已完成|人力资源|
| 占|未完成|销售额|
| 法兰克|未完成|人力资源|
| 莎拉|已完成|技术|
我希望返回一个按部门的交叉表查询,该查询按部门计算已完成和未完成的百分比,如下所示
| 现况|人力资源|销售额|技术|
| - ------|- ------|- ------|- ------|
| 已完成|50%|50%|百分之百|
| 未完成|50%|50%|0%|
我是如何努力返回每个部门的已完成和未完成的百分比计算的
这是我目前编写的查询
select * from crosstab($$
SELECT status, department, count(distinct status) * 100.0 / sum(count(*)) over()
FROM completions
GROUP BY status, department
ORDER BY status
$$,
$$select distinct department FROM completions ORDER BY department
$$
) as ("Status" varchar, "HR" varchar, "Sales" varchar, "Tech" varchar)
我不能完全理解百分比的计算
这里还有一个fiddle
1条答案
按热度按时间91zkwejq1#
这是我选择的solution,但如果有更好的替代品,我会很感兴趣
更重要的是
它得到
(columnCount / total) * 100
表示的百分比