求每个部门工资高于部门平均工资的员工数量占整个部门人数的百分比
首先,题目标题里麻烦对问题进行简要描述,你这题我差点就跳过去了,
然后,sql题请提供你的表结构(create table)、测试数据(insert),以及你最终需要的数据的样子(表格数据),
这里我假设你是用的oracle自带的hr这个schema中employees表,
一般这种题有两种方式,
普通点的就是先算出每个部门的平均工资得到一个数据(两列),再去关联原表进行计算,但这要查两次原表。
所以建议用开窗函数,只用查一次原表
select department_id, round(count(i)/count(1)*100,2)||'%' p
from (select a.department_id,
case
when a.salary > avg(a.salary)
over(partition by a.department_id) then
1
end i
from hr.employees a)
group by department_id
答案不是唯一的,就算使用开窗函数,这个题也可以写得五花八门