1741-查找每个员工花费的总时间
查找每个员工花费的总时间
- 题目如下所示.
个人题解
这题看上去复杂,其实还是挺简单的。以下为个人思考过程
-
-- 1. 建表 -- 该表显示了员工在办公室的出入情况 CREATE TABLE 1741_Employees( emp_id INT, event_day DATE, -- 此事件发生的事件 in_time INT, -- 员工进入办公室的时间 out_time INT, -- 员工离开办公室的时间 PRIMARY KEY(emp_id, event_day, in_time) ); -- in_time 和 out_time 的取值仔 1到1440 之间(说明时间以分钟为单位) -- 题目保证同一天没有两个事件在时间上相交,并且保证 in_time 小于 out_time -- 2. 编写一个 SQL 查询以计算每位员工每天在办公室花费的总时间(以分钟为单位)。 -- PS:在一天之内,同一员工是可以多次进入和离开办公室的。 -- 在办公室里一次进出所花费的时间为 out_time 减去 in_time -- 首先以员工、日期分组,查看具体的情况 SELECT em.emp_id, em.event_day, GROUP_CONCAT(em.in_time), GROUP_CONCAT(em.out_time) FROM 1741_Employees em GROUP BY em.emp_id, em.event_day; -- 一个员工多次出入的情况下,怎么计算呢? -- 其实应该可以按照数学规律来计算,我们来验证一下 -- 32 - 4 = 28, 200 - 55 = 145 , 总计为 173 -- 200 + 32 - ( 4 + 55 ) = 173 -- 那么接下来的 SQL 编写就较为简单了,如下所示 SELECT em.event_day day, em.emp_id, SUM(em.out_time) - SUM(em.in_time) total_time FROM 1741_Employees em GROUP BY em.emp_id, em.event_day;