sql - 根据基线行计算百分比/聚合
问题描述
我想计算一个销售团队与特定团队成员相比的生产力。
鉴于此查询:
with t1 (rep_id, place_id, sales_qty) as (values
(0, 1, 3),
(1, 1, 1),
(1, 2, 2),
(1, 3, 4),
(1, 4, 1),
(2, 2, 1),
(2, 3, 3)
)
select
rep_id,
count(distinct place_id) as qty_places,
sum(sales_qty) as qty,
sum(sales_qty) / count(place_id) as productivity
from
t1
group by
rep_id
结果:
rep_id | qty_places | qty_sales | productivity
---------------------------------------------
0 | 1 | 6 | 6
1 | 4 | 22 | 5
2 | 2 | 9 | 4
我希望团队的生产力基于 rep_id = 1 的生产力,所以我想要这样的东西:
rep_id | qty_places | qty_sales | productivity | productivity %
--------------------------------------------------------------
0 | 1 | 6 | 6 | 1.2
1 | 4 | 22 | 5 | 1 <- Baseline
2 | 2 | 9 | 4 | 0.8
如何在 PostgreSQL 上使用 SQL 实现这一点?
解决方案
这应该可以解决问题
with t1 (rep_id, place_id, sales_qty) as (values
(0, 1, 3),
(1, 1, 1),
(1, 2, 2),
(1, 3, 4),
(1, 4, 1),
(2, 2, 1),
(2, 3, 3)
),
cte as (select
rep_id,
count(distinct place_id) as qty_places,
sum(sales_qty) as qty,
sum(sales_qty) / count(place_id) as productivity
from
t1
group by
rep_id)
select rep_id, qty_places, qty, productivity,
productivity::numeric/(select productivity::numeric from cte where rep_id = 1)
as productivity_percent from cte
推荐阅读
- laravel - 从数据库中检索分层数据
- javascript - 避免 TypeScript 中接口的初始 I 不会导致命名冲突吗?
- microsoft-graph-api - 如何识别 OneDrive DriveItem 权限标识是组还是用户
- c# - 如何使用 Web Api 在 Dynamics 365 CRM(在线)中发现我的组织的 URL
- django - 在 drf viewset 检索 url 中将 pk 验证为 int
- openlayers - 在 openlayers 中更改几何图形后如何选择特征?
- reactjs - 无法读取未定义的属性“setTargetNode”
- statistics - 给定路径图的 SEM 模型语法
- php - 从不同类型的数组中获取值
- autosar - 为什么 SoftwarePackage 没有版本?