zoukankan      html  css  js  c++  java
  • 3、查找当前薪水详情以及部门编号dept_no

    1、题目描述:

    查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no。

    CREATE TABLE `dept_manager` (
    `dept_no` char(4) NOT NULL,
    `emp_no` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`dept_no`));
    CREATE TABLE `salaries` (
    `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`));

    输入描述:

    输出描述:

    emp_nosalaryfrom_dateto_datedept_no
    10002 72527 2001-08-02 9999-01-01 d001
    10004 74057 2001-11-27 9999-01-01 d004
    10005 94692 2001-09-09 9999-01-01 d003
    10006 43311 2001-08-02 9999-01-01 d002
    10010 94409 2001-11-23 9999-01-01 d006

    2、代码:

    select s.emp_no,s.salary,s.from_date,s.to_date,d.dept_no 
    from salaries s join dept_manager d on d.emp_no=s.emp_no 
    where d.to_date='9999-01-01' and s.to_date='9999-01-01';

      这里的坑主要在于两个表的逻辑关系,题目要求是薪水情况以及部门编号,再结合输出情况dept_no 被放到了最后一列,可见是主表是“salaries”。这里顺序错了就会提示:您的代码无法通过所有用例。

      其原因是 salaries 的 from_date 是当前薪水的开始时间,dept_manager 的 from_date 是作为部门经理的开始时间。当上部门经理之后可能还会有好几次加薪。所以两个表的 from_date 不一样。

  • 相关阅读:
    ODAC配置
    mysql 创建索引和删除索引
    Linux下安装多个tomcat
    CentOS7/6 关闭防火墙
    从navicat中导入sql文件过大:Got a packet bigger than 'max_allowed_packet' bytes
    手动添加jar包到本地仓库
    mysql权限
    Linux常用命令
    centos 6.5安装VMware tools
    MySql 查询数据库中所有表名以及对比分布式库中字段和表的不同
  • 原文地址:https://www.cnblogs.com/guoyu1/p/12239628.html
Copyright © 2011-2022 走看看