mysql - 在SQL中选择工作时间最长的员工

标签 mysql sql

我的数据库如下所示:

表:dept_emp:

+--------------------------+-----------------------+------------------------+
| emp_no (Employee Number) | from_date (Hire date) | to_date (Worked up to) |
+--------------------------+-----------------------+------------------------+
|                        5 | 1995-02-27            | 2001-01-19             |
|                      500 | 1968-01-01            | 9999-01-01             |
+--------------------------+-----------------------+------------------------+

注意:如果员工目前仍在公司工作,他们的 to_date 将显示 9999-01-01

我想要做的是显示工作时间最长的员工的 emp_no。我不知道如何使用数据库中的随机 9999-01-01 来做到这一点。

这是我到目前为止所想到的:

SELECT emp_no 
  FROM (SELECT max(datediff( (SELECT to_date 
                                FROM dept_emp), 
                             (SELECT from_date 
                                FROM dept_emp)
                           )
                  )
       );

这不起作用,而且也没有考虑 9999-01-01

我想我应该在他们的某个地方使用CURDATE()

最佳答案

你可以尝试这样的事情:

select 
  d.*,
  datediff(
    case when to_date = '9999-01-01' then current_date else to_date end,
    from_date) as how_long
from dept_emp d
where 
datediff(
    case when to_date = '9999-01-01' then current_date else to_date end,
    from_date) = (

  -- find the longest tenure
  select max(datediff(
    case when to_date = '9999-01-01' then current_date else to_date end,
    from_date))
  from dept_emp

)

如果这是您表格中的信息类型:

create table dept_emp (
  emp_no int,
  from_date date,
  to_date date
);
insert into dept_emp values 
(1, '2000-01-01', '2000-01-02'),
(2, '2000-01-01', '2005-02-01'),
(3, '2000-01-01', '9999-01-01');

您的结果将是:

| emp_no |                 from_date |                   to_date | how_long |
|--------|---------------------------|---------------------------|----------|
|      3 | January, 01 2000 00:00:00 | January, 01 9999 00:00:00 |     5902 |

示例 SQLFiddle:http://sqlfiddle.com/#!9/55886/11

关于mysql - 在SQL中选择工作时间最长的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686652/

相关文章:

SQL 不是自动递增的

c# - 如何不在插入中使用 SCOPE_IDENTITY()

mysql - 优化 MySQL 连接查询?

mysql - SQL : Calculating Percentage by joining a sub table to another

mysql - DELETE 语句中的错误代码 1093

sql - 无法在 SQL Server 2012 Management Studio 中使用 DESC 命令

sql - 同一个表之间多对多的级联删除

SQL CASE错误输出

MySQL:列大小限制

php - 基于标签权重的相似文章