【问题标题】:SQL - I need to show which employee from department 90 was hired before those from department 80. Oracle SQLSQL - 我需要显示部门 90 的员工先于部门 80 的员工被雇佣。Oracle SQL
【发布时间】:2022-12-19 22:53:35
【问题描述】:

SQL - 我需要显示 90 部门的哪个员工在 80 部门的员工之前被雇用。Oracle SQL。

数据库结构 -> https://i.stack.imgur.com/RQ6CH.png

我试过这个查询,但它根本不起作用....

选择姓氏 来自员工 WHERE hire_date<ALL (选择 hire_date FROM employees where(hire_date FROM employees WHERE department_id=90)< (选择 hire_date FROM employees where(hire_date FROM employees WHERE department_id=80))

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    这是一个选项:

    • 子查询返回部门 80 的第一个雇用日期,而
    • 主查询返回部门 90 中在先前返回日期之前雇用的员工的行

    select *
    from employees
    where department_id = 90
      and hire_date < (select min(hire_date)
                       from employees
                       where department_id = 80
                      )
    

    【讨论】:

      【解决方案2】:

      您无需使用 MATCH_RECOGNIZE 查询表两次即可完成此操作:

      SELECT last_name
      FROM   (
        SELECT last_name,
               hire_date,
               department_id
        FROM   employees
        WHERE  department_id IN (80, 90)
      )
      MATCH_RECOGNIZE(
        ORDER BY hire_date
        ALL ROWS PER MATCH
        PATTERN (^ department_80)
        DEFINE department_80 AS department_id = 80
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 2011-04-28
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        相关资源
        最近更新 更多