Oracle求部门员工工资占总工资的比率

--根据每个部门来统计部门工资总和

select deptid, sum(sal) 工资合计 from emp group by deptid;

--根据每个部门来统计部门工资总和
select deptid, 工资合计, sum(工资合计) over() as 总合计
  from (select deptid, sum(sal) 工资合计 from emp group by deptid) x;
 
 
 
 select
    deptid  部门,
        工资合计,
        总合计,
        round((工资合计/总合计) * 100 , 2) || ‘%‘ as 工资比例
   from (select deptid,
                工资合计,
                sum(工资合计) over() as 总合计 from (select deptid,
                                                     sum(sal) 工资合计
                                                from emp
                                               group by deptid) x ) y
  order by 1;

--round(number,2) 保留下面两位小数  根据截取后一位小数来进行四舍五入
   select round(2342.54665,1) from dual;

--使用专用的比例函数
select deptid,
       工资合计,
       sum(工资合计) over() as 总合计,
       round(ratio_to_report(工资合计) over() * 100, 2) || ‘%‘ as 工资比例
  from (select deptid, sum(sal) 工资合计 from emp group by deptid)
 order by 1 desc;

--使用分析函数 查询每个员工在对应部门中所占的工资比列
select deptid,
       ename,
       sal,
       round(ratio_to_report(sal) over(partition by deptid) * 100, 2) || ‘%‘ 工资比例
  from emp
 order by 1, 2;

时间: 2024-09-30 11:13:18

Oracle求部门员工工资占总工资的比率的相关文章

2018-07-25期 MapReduce求部门工资总和及平均工资

1.Mapper类 package cn.sjq.bigdata.mr.salary; import java.io.IOException; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; /** * 求部门员工薪资总和

Oracle中PL/SQL的例题:-- 输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金)

declare -- 声明record类型对象 type emp_record_type is record ( v_dname dept.dname%type, v_count emp.empno%type, v_avgesal emp.sal%type ); -- 声明record类型的变量 v_emp emp_record_type; begin -- 查询数据 ,给变量赋值 select d.dname,count(e.ename),avg(sal+nvl(comm,0)) into v

agruments应用——求出函数参数的总合&&css函数——设置/读取对象的属性&&当前输入框高亮显

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

通过Python获取Linux系统所有分区和分区已使用空间占总空间的百分比

#!/usr/bin/env python # -*- coding: utf-8 -*- # 作者:昨夜星辰 # 脚本作用:获取系统所有分区和分区已使用空间占总空间的百分比. # 注意事项:该脚本只能在Linux系统下执行,适用于Python 2. import os import re # 获取系统所有分区 def getAllPartitionOfSystem():     result = []     f = os.popen('mount')     text = f.readlin

检查分区已使用空间占总空间的百分比并发送告警邮件

#!/usr/bin/env python # -*- coding: utf-8 -*- # 作者:昨夜星辰 # 脚本作用:检查服务器的所有分区,如果分区已使用空间占总空间的百分比超过阀值便发送邮件到告警邮箱. # 注意事项:该脚本只能在Linux系统下执行,适用于Python 2. import os import re import smtplib import string # 获取系统所有分区 def getAllPartitionOfSystem():     result = []

oracle中plsql练习题----查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。 – –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工资为7500元,入职日期为“2002年3月5日”,部门号为50。 – –如果存在多个名“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号L。

一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二.在增删改之后加上commit提交事物. 三.具体实现 1 declare 2 -- 声明rowtype类型接收数据即可 3 v_emp emp%rowtype; 4 5 begin 6 -- 查询员工中姓为“SMITH” 7 select * into v_emp from emp where en

Oracle 部门员工查询

--部门:部门编号,部门名称,地址: --员工:员工编号,员工名字,职务,管理编号,入职日期,薪资,奖金,部门编号: CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(20), loc VARCHAR(20) ); CREATE TABLE emp( empno INT PRIMARY KEY, ename VARCHAR(20) NOT NULL, job VARCHAR(20) CHECK (job IN('CLERK','SA

Oracle 求昨天 上个月 去年 日期

到公司发现有一个报表没有收到,查看后发现原来是Oracle数据源异常. SELECT to_char(SYSDATE - interval '1' month, 'yyyyMMdd') AS fromdata, to_char(SYSDATE - interval '1' day, 'yyyyMMdd') AS enddata FROM DUAL; 上面这个sql求上个月今天和昨天.一般情况下不会报错. 但是今天是5月31号,上个月今天就是4月31号.Oracle找不到,只能报错了. 依此类推,

查下昨天下午4点到现在 青岛3000占总3000的处理比例

select count (*) from do_log with(nolock ) where createtime between '20151012 16:00:000' and '20151013 13:00:000'  and  ( driverId like '132-%' or driverId like '133-%' ) select count (*)  from do_log with(nolock ) where createtime between '20151012