我处在某种情况下,我需要找出在办公室进行一些内部申请所花费的总时间。
我有这样的示例数据:
Id EmployeeId ScanDateTime Status
7 87008 2018-08-02 16:03:00.227 1
8 87008 2018-08-02 16:06:17.277 2
9 87008 2018-08-02 16:10:37.107 3
10 87008 2018-08-02 16:20:17.277 2
11 87008 2018-08-02 16:30:37.107 3
12 87008 2018-08-02 20:06:00.000 4
这里的状态有不同的含义:
1开始2暂停3恢复4结束
表示员工在状态为1时在ScanDateTime开始工作。他们可以休息一下(状态2),然后返回并继续他们的工作(状态3),状态为4表示他们正在结束工作。注意:工作时间可能会有多个休息时间。
预期产量:
EmployeeId StartTime EndTime BreakInMins
87008 2018-08-02 16:03:00.227 2018-08-02 20:06:00.000 14
我试图按照一些示例来计算预期的结果集,但无济于事。
在类似的示例可用的地方,我找不到任何这样的示例。
任何帮助,将不胜感激。
请尝试这个。处理多个休息/员工和个案,当休息仍在进行中或会话未完成时
select
[EmployeeId] = [s].[EmployeeId]
,[StartTime] = [s].[ScanDateTime]
,[EndTime] = [et].[ScanDateTime]
,[BreakInMins] = [b].[BreakInMins]
from
[Scans] as [s] -- here is your table
outer apply
(
select top 1 [ScanDateTime], [Id] from [Scans] where [Id] > [s].[Id] and [EmployeeId] = [s].[EmployeeId] and [Status] = 4 order by [ScanDateTime] asc
) as [et]
outer apply
(
select
[BreakInMins] = sum(isnull([r].[mins], datediff(mi, [sp].[ScanDateTime], getdate())))
from
[Scans] as [sp]
outer apply
(
select top 1 [mins] = datediff(mi, [sp].[ScanDateTime], [ScanDateTime]) from [Scans] where [Id] > [sp].[Id] and [EmployeeId] = [sp].[EmployeeId] and [Status] IN (3, 4) order by [ScanDateTime] asc
) as [r]
where
[sp].[id] > [s].[id] and [sp].[id] < isnull([et].[id], [id] + 1)
and [sp].[EmployeeId] = [s].[EmployeeId]
and [sp].[Status] = 2
) as [b]
where
[Status] = 1;
这是易于测试的脚本:脚本
问题内容: 我有一个mongodb,其结构如下: 我需要找到用户在任何特定位置所花费的总时间。我已阅读多个博客,但尚未找到任何具体答案。我有以下几点: 问题答案: 您可以 从字段中找到,然后使用 来获取总数 您可以将其进一步划分以获取天,小时,分钟或秒 对于mongodb 4.0 及更高版本
问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。
问题内容: 我有一个时间戳记,我想知道是否有办法在PST中将其舍入到一天的开始。例如,ts:对应于,但是我想将其舍入为一个映射到的时间戳。我读了time.Time文档,但没有找到解决方法。 问题答案: 执行此操作的简单方法是使用上一个创建新内容,并且仅分配年份的月份和日期。看起来像这样; 这是一个表演例子;https://play.golang.org/p/jnFuZxruKm
问题内容: 我有一张桌子来存储事件(目前大约有5M,但还会有更多)。每个事件都有我要对此查询关注的两个属性- (纬度和经度对)和。 我的目标是 :对于给定的位置范围(SW / NE纬度/经度对,因此有4个浮点数)将返回落入这些范围之内的前100个事件。 我目前正在使用以下查询: 现在暂时搁置此查询无法处理的日期线回绕问题。 对于较小的位置范围,此方法效果很好,但是每当我尝试使用较大的位置范围时,时
我在学习java stream api时在代码中发现了这个问题。 这是我的代码 我在sts和inteliJ IDE上试用了这段代码,结果都是一样的。并行比顺序需要更长的时间。我的JDK有问题吗?请建议。
这里有三个子流,其中一个子流是HTTP出站调用。我希望HTTP调用应该尝试获得响应,直到提到的时间。如果超时,那么主流应该中断,并以Json格式显示错误消息作为输出。 下面是代码-