根据下面条件查找EMP的数据
-- 找出部门里工种工资超过40%的
-- 根据部门工种分组,求每个部门各工种的工资和,求各部门的工资和 (例如部门10的工资和为 2450+5000+800+1300 )
select deptno,
job,
sum(sal) job_sal,
sum(sum(sal)) over(partition by deptno) deptno_sal
from emp
group by deptno, job-- over 函数告诉sql引擎 按 部门号 deptno 来分区 计算部门所有工资的和 ,当然这个sum也可以换成其他的函数 ,sal也可以换成其他的列字段
select sum(sal) over(partition by deptno) deptno_sal,a.* from emp a--找出部门里工种工资超过40%的
select deptno,job,job_sal,deptno_sal,round(job_sal/deptno_sal,2)*100 from (
select deptno,
job,
sum(sal) job_sal,
sum(sum(sal)) over(partition by deptno) deptno_sal
from emp
group by deptno, job) where job_sal>deptno_sal*0.4--总结
--Over函数指明在那些字段上做分析,其内跟Partition by表示对数据进行分组。注意Partition by可以有多个字段。
--Over函数可以和其它聚集函数、分析函数搭配,起到不同的作用。例如这里的SUM,还有诸如Rank,Dense_rank
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




