SQL:查找按 ID 分组的最大平均值
SQL: finding the maximum average grouped by an ID
考虑以下数据集:
id
name
mgr_id
salary
bonus
1
Paul
1
68000
10000
2
Lucas
2
29000
null
3
Max
1
50000
20000
4
Zack
2
30000
null
我现在想找出给下属支付最高平均工资加奖金的经理。经理是出现在 mgr_id 个单元格中的人。因此,在此示例中,Paul 和 Lucas 是经理,因为他们的 ID 出现在他们自己的 mgr_id 列中,而 Max 代表 Paul,Zack 代表 Lucas。
基本上我想要 MAX(AVG(salary + bonus)) 然后按 mgr_id 分组。我怎样才能做到这一点?
我正在使用 SQLite。
在此示例中,我的预期输出只是员工姓名 'Paul',因为他有 2 个下属(他自己和 Max),并且比其他经理 Lucas 付给他们更多的钱。
SELECT
mrg_id
, pay_avg
FROM
(
SELECT mrg_id
, AVG(salary + COALESCE(bonus,0)) pay_avg
FROM <table>
GROUP
BY mrg_id
) q
ORDER
BY pay_avg
desc
LIMIT 1
select top 1 t1.mgr_id,AVG((t1.salary)+(t1.bonus)) as tot_sal
from #tbl_emps as t1
group by t1.mgr_id
order by AVG((t1.salary)+(t1.bonus)) desc
考虑以下数据集:
id | name | mgr_id | salary | bonus |
---|---|---|---|---|
1 | Paul | 1 | 68000 | 10000 |
2 | Lucas | 2 | 29000 | null |
3 | Max | 1 | 50000 | 20000 |
4 | Zack | 2 | 30000 | null |
我现在想找出给下属支付最高平均工资加奖金的经理。经理是出现在 mgr_id 个单元格中的人。因此,在此示例中,Paul 和 Lucas 是经理,因为他们的 ID 出现在他们自己的 mgr_id 列中,而 Max 代表 Paul,Zack 代表 Lucas。 基本上我想要 MAX(AVG(salary + bonus)) 然后按 mgr_id 分组。我怎样才能做到这一点? 我正在使用 SQLite。
在此示例中,我的预期输出只是员工姓名 'Paul',因为他有 2 个下属(他自己和 Max),并且比其他经理 Lucas 付给他们更多的钱。
SELECT
mrg_id
, pay_avg
FROM
(
SELECT mrg_id
, AVG(salary + COALESCE(bonus,0)) pay_avg
FROM <table>
GROUP
BY mrg_id
) q
ORDER
BY pay_avg
desc
LIMIT 1
select top 1 t1.mgr_id,AVG((t1.salary)+(t1.bonus)) as tot_sal
from #tbl_emps as t1
group by t1.mgr_id
order by AVG((t1.salary)+(t1.bonus)) desc