图,其中有/中分为单列没有分开行的信息有两列

问题描述 投票:0回答:3

我有一个包含员工的工作转移数据的表。每一行都包含员工ID编号,不管它们或缩小计时和相应的行动日期时间。表shifts

+-----+------------+--------+---------------------+
| id  | employeeid | action | timestamp           |
+-----+------------+--------+---------------------+
| 99  | 76         | in     | 2019-01-25 12:20:43 |
| 100 | 76         | out    | 2019-01-25 22:17:22 |
| 102 | 76         | in     | 2019-01-26 10:38:14 |
| 104 | 76         | out    | 2019-01-26 17:00:26 |
| 105 | 76         | in     | 2019-01-27 11:45:35 |
| 106 | 76         | out    | 2019-01-27 14:48:27 |
| 110 | 76         | in     | 2019-01-27 17:33:15 |
| 117 | 76         | out    | 2019-01-28 02:16:21 |
+-----+------------+--------+---------------------+
  • 有可能在同一个日期多个班次为给定的员工
  • 移可能跨越从一天到下一个
  • 在列qazxsw POI条目总是在qazxsw POI,qazxsw POI秩序

我需要创建每个轮班表示为单行,像这样一个观点:

action

如果员工的最后一个动作是in那么出应为NULL

我已经通过,从行合并的数据列,但找不到任何与这样的二进制情况涉及几个帖子读。

有人能指出我在这个正确的方向?谢谢。

mysql
3个回答
1
投票

以前的答案看起来不错,但我在一天,或跨越多天的转变想知道两班倒,心想也许ID是很重要的。

我假设id列是一个始终保持上升的整数主键。

我认为没有人可以检查出没有首先检查。

我想,你希望如果有人在已检查但没有走出“走出去”为NULL。

我以为时间戳记不是保留字,表名=转变。

尝试:

out

1
投票

没有相关子查询解决方案...

+------------+---------------------+---------------------+
| employeeid | in                  | out                 |
+------------+---------------------+---------------------+
| 76         | 2019-01-25 12:20:43 | 2019-01-25 22:17:22 |
| 76         | 2019-01-26 10:38:14 | 2019-01-26 17:00:26 |
| 76         | 2019-01-27 11:45:35 | 2019-01-27 14:48:27 |
| 76         | 2019-01-27 17:33:15 | 2019-01-28 02:16:21 |
+------------+---------------------+---------------------+

0
投票

你可以组由employeid和日期的数据,并在第一时间拿到并持续了日期时间用分钟与嵌套如果max函数。

in

编辑:

正如我现在知道,想要的解决方案是,该查询返回一行每个序列的员工是在办公室里。因此,如果员工是在办公室从早上8点至12点,在13:00再次回来,并在22:00再次离开,应该有2行。我有一个窗口的功能解决了这个问题,你至少需要MySQL版本8.如果您还没有MySQL版本8,你可以用一个自连接解决它。

SELECT employeeid,
 timestamp AS "in",
 (SELECT MIN(s3.timestamp) FROM shifts s3
  WHERE s3.employeeid = s1.employeeid
  AND s3.action='out' AND s3.id > s1.id) AS "out"
FROM shifts s1 WHERE action='in';
© www.soinside.com 2019 - 2024. All rights reserved.