1-ые данные - officeIn, а 2-ые - OfficeOut. Пользователь может многократно вводить данные в день. Я хочу узнать, сколько времени в формате чч: мм: сс он находится в офисе. - PullRequest
0 голосов
/ 19 марта 2019

enter image description here

1476    5   2019-03-18 09:35:06.000
1487    5   2019-03-18 13:19:53.000
1488    5   2019-03-18 13:37:40.000
1495    5   2019-03-18 15:09:38.000
1497    5   2019-03-18 15:18:26.000
1503    5   2019-03-18 17:34:46.000
1504    5   2019-03-18 17:48:23.000
1511    5   2019-03-18 19:14:51.000

1 Ответ

0 голосов
/ 19 марта 2019

Я использовал LAGOVER для вычисления разницы во времени, а затем использовал ROW_NUMBER, чтобы вычислять только каждую вторую строку. Затем я выбираю только строки с вычисленным значением. Это решение, конечно, довольно хрупкое, так как оно опирается на правильное количество строк без пропуска временной отметки.

SELECT employeeID, time 
FROM (
    SELECT employeeID, 
        CASE ROW_NUMBER() over (partition by employeeId ORDER BY checktime ASC) MOD 2 
        WHEN 1 THEN null
        ELSE TIMEDIFF(checktime, LAG(checktime) over (partition by employeeId ORDER BY checktime ASC)) 
        END as Time
        FROM table1) t1
WHERE time IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...