--- tags: sql, LeetCode disqus: HackMD --- # 1741. Find Total Time Spent by Each Employee `Find Total Time Spent by Each Employee` 透過`leetcode 1741`[Find Total Time Spent by Each Employee](https://leetcode.com/problems/find-total-time-spent-by-each-employee/description/?envType=study-plan&id=sql-i)來練習 #### 使用table ![](https://i.imgur.com/8OZrosD.png) (emp_id, event_day, in_time) 是這個表的主鍵。 該表顯示了員工在辦公室的進出。 event_day 是該事件發生的日期,in_time 是員工進入辦公室的分鐘, out_time 是他們離開辦公室的分鐘。 in_time 和 out_time 介於 1 和 1440 之間。 保證同一天沒有兩個事件在時間上相交,並且 in_time < out_time。 ## 題目說明: 編寫 SQL 查詢以計算每個員工每天在辦公室花費的總時間(以分鐘為單位)。請注意,在一天內,員工可以多次進入和離開。在辦公室單次進入所花費的時間是。out_time - in_time 按任意順序返回結果表。 查詢結果格式如下例所示。 ![](https://i.imgur.com/nAc3W2a.png) ## 解題: 以下為第一個解法 先將`in_time` & `out_time` sum 起來 再select一次時將 `sum(out_time)` - `sum(in_time)` ```sql= SELECT m.event_day as day,m.emp_id,isnull(m.CO,0) - isnull(m.CI,0) as total_time FROM ( SELECT event_day,emp_id,sum(in_time) as CI,sum(out_time) as CO FROM Employees group by event_day,emp_id ) M order by day ``` By. @UEW2WaUHTqSmPOSfnfXrNw