如何解决还有其他方法可以解决涉及员工数据的SQL问题吗?
公司在3列的表格中记录员工进出办公室的情况
(Employee id,Action (In/Out),Created)
。
每个员工的第一个条目是“ In”。 每个“ In”都由“ Out”代替。没有数据缺口,员工可以跨天工作。
Employee id Action Created
1 In 2019-04-01 12:00:00
1 Out 2019-04-01 15:00:00
1 In 2019-04-01 17:00:00
1 Out 2019-04-01 21:00:00
1。)查找当前办公室内的员工人数。以下是我的尝试。
Select sum(case when Action = 'IN' then 1 when Action = 'OUT' then -1 end) from Company where Created = getdate()
解决方法
假定没有空隙。
Select sum(case when Action = 'IN' then 1 when Action = 'OUT' then -1 end) from Company where Created <= getdate();
或者,下面没有任何where子句。该数字在该时间点的那一刻是正确的-
Select sum(case when Action = 'IN' then 1 when Action = 'OUT' then -1 end) from Company
,
如果员工在建筑物中,则其最新的[操作]设置为“进入”,并且没有相应的“离开”操作。像这样
with entry_cte as (
select *,row_number() over (partition by employee_id order by created desc) rn)
select count(*) in_building_count
from entry_cte ec
where [action]='In'
and rn=1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。