zoukankan      html  css  js  c++  java
  • SQL练习题24:给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。 (数据保证每个员工的每条薪水记录to_date-from_date=1年,而且同一员工的下一条薪水记录from_data=上一条薪水记录的to_data)

    题目:

    给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。

    提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)
    (数据保证每个员工的每条薪水记录to_date-from_date=1年,而且同一员工的下一条薪水记录from_data=上一条薪水记录的to_data)


    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`));
    如:插入

    INSERT INTO salaries VALUES(10001,52117,'1986-06-26','1987-06-26');
    INSERT INTO salaries VALUES(10001,62102,'1987-06-26','1988-06-25');
    INSERT INTO salaries VALUES(10002,72527,'1996-08-03','1997-08-03');
    INSERT INTO salaries VALUES(10002,72527,'1997-08-03','1998-08-03');
    INSERT INTO salaries VALUES(10002,72527,'1998-08-03','1999-08-03');
    INSERT INTO salaries VALUES(10003,43616,'1996-12-02','1997-12-02');
    INSERT INTO salaries VALUES(10003,43466,'1997-12-02','1998-12-02');

    程序:

    SELECT s2.emp_no, s2.from_date, (s2.salary - s1.salary) AS salary_growth
    FROM salaries AS s1 INNER JOIN salaries AS s2
    ON s1.emp_no = s2.emp_no
    WHERE s1.to_date = s2.from_date
    AND s2.salary - s1.salary > 5000
    ORDER BY salary_growth DESC
    
  • 相关阅读:
    C#编程.异常处理(Exception Handling Statements)
    rabbitMQ 消息队列
    非技术问题
    sql优化
    数控机床,模具
    nginx 服务器
    zuul 网关
    分布式配置中心
    hystrix 解决服务雪崩效应
    负载均衡
  • 原文地址:https://www.cnblogs.com/zhuozige/p/13747187.html
Copyright © 2011-2022 走看看