0

我在 ETSU 从事数据库基础课程。我们的讲师来自孟加拉国,所以有时很难听懂他的讲课。那么 SYSDATE 的使用就是那些日子之一。然后在我们实验室有这个问题,

显示按 job_id 分组的员工的平均工作持续时间(天数)。假设没有人辞职或被解雇。使用 Oracle 日期函数 SYSDATE。

经过数小时的谷歌和堆栈溢出搜索,以及教授未回答的问题,它仍然难倒我。

我尝试了几个(SELECT、FROM、GROUP_BY、HAVING 和 ORDER_BY),终于来到这里寻求帮助。

这是我的脚本:

     SELECT job_id, hire_date
     FROM hr.employees
     GROUP BY job_id
     HAVING AVG(SYSDATE) - hire_date;

这是我的错误:错误从第 1 行开始 - 命令中的 SELECT job_id,hire_date FROM hr.employees GROUP BY job_id HAVG(SYSDATE) - hide_date; 命令行错误:4 列:31 错误报告 - SQL 错误:ORA-00920:无效的关系运算符 00920。00000 -“无效的关系运算符”

我究竟做错了什么?

4

1 回答 1

0

显示按 job_id 分组的员工的平均工作持续时间(天数)。假设没有人辞职或被解雇。使用 Oracle 日期函数 SYSDATE。

因此,假设自雇用以来没有员工被解雇,让我们看下面的示例,该示例找到每个部门员工的平均工作时间。此外,这假设一周中的所有日子(包括周末)。

SQL> SELECT deptno,
  2    ROUND(AVG(SYSDATE - hiredate), 2) avg_duration
  3  FROM emp
  4  GROUP BY deptno
  5  /

    DEPTNO AVG_DURATION
---------- ------------
        30     12327.79
        20     12135.45
        10     12218.79

SQL>

如果您不想包括周末,那么您需要过滤掉那些属于周末或节假日的日期。

暗示,where to_char(that_date, 'Dy') not in ('Sat', 'Sun')

但是,我觉得这个问题太简单了,没必要搞得这么复杂。因此,上述解决方案就足够了。

于 2015-03-31T05:28:00.447 回答