时间戳记的持续时间?

时间:2018-07-12 09:33:24

标签: sql oracle

我输入日期为DD.MM.YYYY HH:MM:SS格式,数量和工人名称

这是数据的样子:

ENTRY_DATE          WORKER_ID   QUANTITY
04.06.2018 7:54     34020893    7
04.06.2018 7:56     34020893    8
04.06.2018 7:54     33236047    9
11.04.2018 1:08     21753391    10
11.04.2018 1:07     22165585    4
12.04.2018 13:33    85048731    3
13.06.2018 1:28     49359718    8
11.04.2018 7:38     21753391    2
11.04.2018 7:26     23978525    8
11.04.2018 7:24     60054767    5
11.04.2018 7:23     55013910    6
11.04.2018 7:26     85048731    1
11.04.2018 7:29     85048731    1
11.04.2018 7:28     76149054    6
11.04.2018 7:29     85048731    1
11.04.2018 7:30     6142395     5
11.04.2018 7:30     12696509    4
11.04.2018 7:28     73004538    7
11.04.2018 7:30     85048731    2
11.04.2018 7:30     85048731    8
11.04.2018 7:27     50991253    5
11.04.2018 7:30     98493524    8
11.04.2018 7:28     28851347    2
11.04.2018 7:30     79286529    3
12.04.2018 8:24     34020893    7
12.04.2018 13:24    21753391    1
12.04.2018 13:31    82997006    9
12.04.2018 13:32    21753391    4
12.04.2018 13:25    34020893    3

我需要什么: WORKER_ID工作了x小时,处理了y个单位

WORKER_ID   TOTAL_QUANTITY  TOTAL_HOURS_WORKED 
82997006    50              08:36:56

这与此类似:https://www.interfacett.com/blogs/how-to-use-values-from-previous-or-next-rows-in-a-query-in-sql-server/

但是开始和结束时间不在两行之间,而是在多行之间。

我当前的SQL:

SELECT
     TO_CHAR(be.ENTRY_DATE, 'YYYY/MM/DD HH24:MI:SS') AS ENTRY_DATE
    ,WORKER_ID
    ,QUANTITY
FROM BINEDIT_ENTRIES
WHERE REGION_ID = 2
AND be.ENTRY_DATE BETWEEN TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-1
        AND TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')

1 个答案:

答案 0 :(得分:0)

解决方案是我按日期排序并使用固定在worker上的LAG函数。 https://docs.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql?view=sql-server-2017