精华内容
下载资源
问答
  • 五个三部门
    千次阅读
    2021-08-04 13:19:21

    Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId。

    +----+-------+--------+--------------+
    | Id | Name  | Salary | DepartmentId |
    +----+-------+--------+--------------+
    | 1  | Joe   | 85000  | 1            |
    | 2  | Henry | 80000  | 2            |
    | 3  | Sam   | 60000  | 2            |
    | 4  | Max   | 90000  | 1            |
    | 5  | Janet | 69000  | 1            |
    | 6  | Randy | 85000  | 1            |
    | 7  | Will  | 70000  | 1            |
    +----+-------+--------+--------------+

    Department 表包含公司所有部门的信息。

    +----+----------+
    | Id | Name     |
    +----+----------+
    | 1  | IT       |
    | 2  | Sales    |
    +----+----------+
    编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:

    +------------+----------+--------+
    | Department | Employee | Salary |
    +------------+----------+--------+
    | IT         | Max      | 90000  |
    | IT         | Randy    | 85000  |
    | IT         | Joe      | 85000  |
    | IT         | Will     | 70000  |
    | Sales      | Henry    | 80000  |
    | Sales      | Sam      | 60000  |
    +------------+----------+--------+

    sql:

    第一种实现:

    SELECT
        d.NAME AS Department,
        e.NAME AS Employee,
        e.Salary AS Salary 
    FROM
        Employee AS e
        LEFT JOIN Department AS d ON e.DepartmentId = d.Id 
    WHERE
        e.Id IN (
        SELECT
            e1.Id 
        FROM
            Employee AS e1
            LEFT JOIN Employee AS e2 ON e1.DepartmentId = e2.DepartmentId 
            AND e1.Salary < e2.Salary 
        GROUP BY
            e1.Id 
        HAVING
            count( DISTINCT e2.Salary ) <= 2 
        ) 
    ORDER BY
        d.Id ASC,
        e.Salary DESC;

    第二种实现:

    SELECT

        d.Name AS 'Department', e1.Name AS 'Employee', e1.Salary

    FROM

        Employee e1

            JOIN

        Department d ON e1.DepartmentId = d.Id

    WHERE

        3 > (SELECT

                COUNT(DISTINCT e2.Salary)

            FROM

                Employee e2

            WHERE

                e2.Salary > e1.Salary

                    AND e1.DepartmentId = e2.DepartmentId

            )

    具体的实现思路就是按着本部门薪资降序排序,去重后取前三名,

    第一种实现思路为GROUP BY having  count()原理 

    第二种实现思路为 DISTINCT 去重取前三 原理

    更多相关内容
  • 研发部门未来年发展规划方案.pdf
  • Employee 表包含所有员工信息,每员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。 +----+-------+--------+--------------+ | Id | Name | Salary | DepartmentId | +----+-------+---...
  • 东莞永亨目标管理手册---如何制定部门工作计划5.pptx
  • 星期面试了一份sql开发的工作,最后一道题目非常有意思,拿出来跟大家分享下。 有如下两tables: department: department_id,department_name ...5 Bella 4500 2 6 Ben 5000 2 7 Alex 1000 2 8

    上个星期面试了一份sql开发的工作,最后一道题目非常有意思,拿出来跟大家分享下。
    有如下两个tables:
    department:
    department_id,department_name
    1 IT
    2 Sale

    employee
    employee_id,name,salary,department_id
    1 Joy 1000 1
    2 Uncle 1500 1
    3 Micky 2500 1
    4 John 1500 1
    5 Bella 4500 2
    6 Ben 5000 2
    7 Alex 1000 2
    8 Cathy 1400 2

    要求筛选出每一个部门工资前三名的员工信息(含部门名)
    首先我想到了用聚合函数max+union 的方法。
    select * from employee where salary = (select max(salary)from employee)
    在这里插入图片描述
    但是酱紫只能筛选所有部门薪酬最高的员工,没办法做到按照不同部门实现排序。
    又总不能在where语句中指定department_id =1 or 2,因为实际情况是你不知道有多少个部门。

    正解:
    首先要用到oracle的窗口函数 row_number()+over().
    select name,salary,department_id,
    row_number() over(partition by department_id order by salary desc)as rank
    from employee
    在这里插入图片描述
    然后再做二次/三次筛选:

    select b.name,b.salary,b.department_id,c.department_name,b.rank from
    (
    select a.name,a.salary,a.department_id,a.rank from
    (
    select name,salary,department_id,
    row_number() over(partition by department_id order by salary desc)as rank
    from employee
    )a
    where a.rank<=3
    )b
    inner join
    department c
    on b.department_id=c.department_id
    在这里插入图片描述

    展开全文
  • Hive SQL 统计每个部门获得前三高工资的所有员工及所有员工占前工资总和的比例 ---------------------------------建表开始---------------------------- -- 建表 temp_employee CREATE TABLE IF NOT EXISTS temp_...

    Hive SQL

    统计每个部门获得前三高工资的所有员工及所有员工占前三工资总和的比例

    在这里插入图片描述
    在这里插入图片描述

    ---------------------------------建表开始----------------------------
    -- 建表 temp_employee
    CREATE TABLE IF NOT EXISTS temp_employee (
        id BIGINT COMMENT '工号',
        name STRING COMMENT '姓名',
        salary BIGINT COMMENT '工资',
        departmentid BIGINT COMMENT '部门编号'
    )COMMENT 'employee员工信息表' 
    STORED AS ORCFILE COMPRESS;
    
    -- 插入数据 temp_employee
    INSERT INTO temp_employee VALUES(1,'Joe',85000,1),(2,'Henry',80000,2),(3,'Sam',60000,2),(4,'Max',90000,1),(5,'Janet',69000,1),(6,'Randy',85000,1),(7,'Will',70000,1);
    
    -- 校验 temp_employee
    SELECT id,name,salary,departmentid from temp_employee;
    -------------------------------------------------------------------
    -- 建表 temp_department
    CREATE TABLE IF NOT EXISTS temp_department (
        id BIGINT COMMENT '部门号',
        name STRING COMMENT '部门名'
    )COMMENT 'department部门信息表' 
    STORED AS ORCFILE COMPRESS;
    
    -- 插入数据temp_department
    INSERT INTO temp_department VALUES(1,'IT'),(2,'Sales');
    
    -- 校验temp_department
    SELECT id,name FROM temp_department;
    
    ---------------------------------建表完成----------------------------
    
    
    -- 3、查询薪资占比 
    SELECT
       dep.name AS department
       ,emp.name AS employee
       ,salary
       ,proportion 
    FROM 
        ( -- 2、取每个部门工资排前三的员工部门号、姓名、工资,统计工资占比
        SELECT 
            departmentid
            ,name
            ,salary
            ,CONCAT(ROUND(salary/SUM(salary) OVER(PARTITION BY departmentid)*100,2),'%')  proportion -- 去掉order by 与没去掉什么区别?
        FROM 
            ( -- 1、分部门按工资紧密排序不跳跃
            SELECT 
                departmentid
                ,salary
                ,name
                ,DENSE_RANK() OVER (PARTITION BY departmentid ORDER BY salary DESC) rk
            FROM temp_employee
            ) dk
        WHERE rk <= 3
        ) emp 
    JOIN 
        temp_department dep 
    ON emp.departmentid = dep.id 
    ORDER BY department,salary desc,employee desc 
     
    
    展开全文
  • 东财20秋《公共部门人力资源管理》单元作业_5答卷.docx
  • 例子:公司-部门-人员 vue页面中: <el-select v-model="companyid" placeholder="请选择公司" @change="changeset"> <el-option v-for="item in companylist" :key="item.value" :label="item....

    vue下拉el-select三级联动

    举个例子:公司-部门-人员

    vue页面中:

      <el-select v-model="companyid" placeholder="请选择公司" @change="changeset">
          <el-option
            v-for="item in companylist"
            :key="item.value"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>
        <el-select
          v-model="departmentid"
          placeholder="请选择部门"
          :disabled="disabled"
          @change="changesetper"
        >
          <el-option
            v-for="item in departmentlist"
            :key="item.value"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>
        <el-select
          v-model="personid"
          placeholder="请选择人员"
          :disabled="disabled1"
        >
          <el-option
            v-for="item in personlist"
            :key="item.value"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>
    
    data() {
        return {
          //公司
          companyid: null,
          companylist: [],
          //部门
          departmentid: null,
          departmentlist: [],
          //部门禁用
          disabled: true,
          //人员
          personid: null,
          personlist: [],
          //人员禁用
          disabled1: true,
        };
      },
    
    
    
      mounted() {
          //获取公司数据
         this.getcompanylist();
      },
    
      methods: {
       //模拟公司数据
        getcompanylist() {
          let data = [
            {
              id: 1,
              name: "江西",
            },
            {
              id: 2,
              name: "湖南",
            },
          ];
          this.companylist = data;
        },
        changeset() {
          //当切换选择公司时需要清空部门、人员
          this.departmentlist = [];
          this.personid = null;
          this.personlist = [];
          // 模拟部门数据
          let data = [
            {
              id: 1,              //部门Id
              name: "江西研发部1",
              companyid: 1,       //公司id
            },
            {
              id: 2,
              name: "江西市场部1",
              companyid: 1,
            },
    
            {
              id: 3,
              name: "湖南研发部2",
              companyid: 2,
            },
    
            {
              id: 4,
              name: "湖南市场部2",
              companyid: 2,
            },
          ];
          if (!!this.companyid) {
            //当公司ID不为空
            this.departmentid = [];
            this.disabled = false;
            //遍历部门下拉框数据
            data.forEach((e) => {
              if (e.companyid == this.companyid) {
                this.departmentlist.push(e);
              }
            });
            //设置默认选中第一个部门
            if (this.departmentlist.length > 0) {
              this.personlist = [];
              this.departmentid = this.departmentlist[0].id;
              //获取人员下拉框数据
              let data = [
                { id: 1, name: "江西研发部小张1", departmentid: 1 }, //id:人员id      																	   //departmentid:部门id
                { id: 2, name: "江西研发部小李1", departmentid: 1 },
                { id: 3, name: "江西市场部小王2", departmentid: 2 },
                { id: 4, name: "江西市场部小蒋2", departmentid: 2 },
                { id: 5, name: "湖南研发部小陆3", departmentid: 3 },
                { id: 6, name: "湖南研发部小夏3", departmentid: 3 },
                { id: 7, name: "小王4", departmentid: 4 },
                { id: 8, name: "小蒋4", departmentid: 4 },
              ];
    		  //遍历data里面的数据
              data.forEach((e) => {
                if (e.departmentid == this.departmentid) {
                  //符合条件的push进人员
                  this.personlist.push(e);
                }
              });
              this.disabled1 = false;
            }
          } else {
            //选中的部门为空,则清空人员列表  部门列表
            this.departmentlist = [];
            this.disabled = true;
            this.disabled1 = true;
            this.personlist = [];
          }
        },
    	//切换部门
        changesetper() {
          this.personlist = [];
          this.personid = null;
          if (!!this.departmentid) {
            this.disabled1 = false;
            //部门下拉框选中获取人员数据
            let data = [
              { id: 1, name: "江西研发部小张1", departmentid: 1 }, //id:人员id      																		 //departmentid:部门id
              { id: 2, name: "江西研发部小李1", departmentid: 1 },
              { id: 3, name: "江西市场部小王2", departmentid: 2 },
              { id: 4, name: "江西市场部小蒋2", departmentid: 2 },
              { id: 5, name: "湖南研发部小陆3", departmentid: 3 },
              { id: 6, name: "湖南研发部小夏3", departmentid: 3 },
              { id: 7, name: "小王4", departmentid: 4 },
              { id: 8, name: "小蒋4", departmentid: 4 },
            ];
    
            data.forEach((e) => {
              if (e.departmentid == this.departmentid) {
                this.personlist.push(e);
              }
            });
            //设置人员默认选中
            if (this.personlist.length > 0) {
              this.personid = this.personlist[0].id;
            }
          } else {
            //部门下拉框为空  ,清空数据
            this.departmentlist = [];
            this.disabled1 = true;
          }
        },
      },
    
    展开全文
  • mysql查询部门工资前的信息

    千次阅读 2019-05-27 21:16:54
    表,一个部门表Department 一Employee表 第一种,(如果有多名并列第,只展示前二) SELECT emp.id , emp.name ,emp.salary, dep.id as depId , dep.name as depName FROM Employee emp ,...
  • 79目前的一些“正确答案”其实不对,因为emp_no是随机...emp_no并不符合这要求。楼上wasrehpic与Linkkuma的答案都可以返回正确值,此处再提供一参考答案select de.dept_no, de.emp_no, s.salaryfrom dept_emp ...
  • mysql表联合查询(员工表,部门表,工资表)

    万次阅读 多人点赞 2019-01-07 17:07:52
    部门 员工 工资表联查有关问题 ,面试常见 列出薪金比关羽高的所有员工。 列出所有员工的姓名及其直接上级的姓名。 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。 列出部门名称和这些部门的员工...
  • 有两张表部门表 department 部门编号 dept_id 部门名称 dept_mementcreate table department(dept_id tinyint auto_increment primary key,dept_mement varchar(30))engine=InnoDB default charset utf8;insert into...
  • 总部共有五个局域网,其中的LAN1-LAN4都连接到路由器R1上,R1再通过LAN5与路由器R5相连。R5和远地的三个部门的局域网LAN6~LAN8通过广域网相连。每一局域网旁边标明的数字是局域网上的主机数。试给每一局域网...
  • 扩展资料: SQL包括了所有对数据库的操作,主要是由4部分组成: 1.数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。 2.数据操纵:这一部分又称为“SQL ...
  • 满意答案congcen2013.04.23采纳率:41%等级:12已帮助:12031人那就是平均分4网段。套用公式2^M(M是借位之后所剩的位数)表示要划分的网段 现在已知要划分4网段 所以M=2 因为M+N=8 所以N=6(N表示网络位向主机位借...
  • on欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一适合你的列表创建一表格设定内容居中、居左、居右SmartyPants...
  • 关于第二题,第题,哪位大佬可以有点再简单的操作方法ma,或者其他方法,想学习学习,欢迎各位大佬指点指点! 这篇博客给大家分享一下我的考试题目吧,其实很简单: 准备工作,要建表用的SQL代码: create ...
  • 最近在做企业微信服务商的需求开发,我们是在做一企业微信第方应用给其他企业使用, 其中有一需求是要同步公司企业的组织架构到企业微信的通讯录上。 目前遇到的问题是: 1、企业微信服务商现在已经不允许...
  • sql查询每班级的前

    千次阅读 热门讨论 2019-08-02 17:20:54
    1.建表语句,插入数据: create table TEST_SCORE ( CLASS VARCHAR(10), NAME VARCHAR(10), SCORE INTEGER ...INSERT INTO test_score ( class, ...5.查询结果如下, 参考: MYSQL:巧用临时变量做分组统计
  • Mysql根据某层部门ID查询所有下级多层子部门的示例,深圳,武汉,部门,组,广州Mysql根据某层部门ID查询所有下级多层子部门的示例易采站长站,站长之家为您整理了Mysql根据某层部门ID查询所有下级多层子部门的示例的...
  • 列出每一个部门中年纪最大的员工姓名,部门名称 selectname,dept_name,agefromdeptRIGHTJOINempeondept.dept1=e.dept2where(selectcount(*)fromempemWHEREem.age>e.ageande.dept2=em.dept2)<1; 查找字符长度.....
  • 层交换机具备网络层的功能,实现VLAN相互访问的原理是:利用层交换机的路由功能,通过识别数据包的IP地址,查找路由表进行选路转发,层交换机利用直连路由可以实现不同VLAN之间的相互访问。层交换机给接口...
  • 如题:查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名这是oracle的默认Scott用户以下的emp 和 dept 表间的一道思考题。雇员表(emp)记录了每一雇员的基本信息NO 字段 ...
  • --先删除原先存在的表: drop table emp; --创建表emp create table emp ( deptno number, ename varchar2(20), ...--部门1的员工信息 insert into emp values(1,'王嘻嘻1',15000); insert into emp val
  • 该可视化显示了种商店类型中每商店内按销售额划分的前5个部门。 用户应该能够在每个部门的工具提示中看到“商店类型”,“商店”,“部门”,“商店销售”和“部门销售”。 [30] 两动作过滤器: 来源:可视...
  • 腾讯TEG AI平台部门三面+HR面经

    千次阅读 2020-09-23 11:08:40
    面约好下午4点电话面试,结果因为面试官在开会等到了快5点。 一上来说之前一面和二面问项目也问得挺多的,这一面就不问项目了。 我心里一惊,感觉快凉了。 面试官开始问一些软问题,比如为什么本科和研究生要...
  • 一、要求:查询平均薪水最高部门的...1、需要考虑最高平均薪资可能在多个部门同时出现,查询出来的结果需要涵盖所有最高平均薪资的部门id 2、部门名称和员工工资不在一表,所以需要用连接进行查询获取部门名称 ...
  • 案例:查询出每个部门工资最高的员工信息 1、背景:当前数据库有employee表和department表,数据分别如下: employee表: department表: 思考步骤: 1、从employee表里查询出每个部门的最高薪资,...
  • 某企业有办公室、财务部、销售部、设计部、生产部5个部门,每个部门分别配置8、10 、10、20、28台计算机。你作为网络管理员,需要为该企业设计并实现一网络。具体要求: (1)为每台计算机分配一私有地址,地址...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 367,496
精华内容 146,998
热门标签
关键字:

五个三部门