【力扣白嫖日记】SQL

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1741.查找每个员工花费的总时间
表:Employees

列名 类型
emp_id int
event_day date
in_time int
out_time int

在 SQL 中,(emp_id, event_day, in_time) 是这个表的主键。该表显示了员工在办公室的出入情况。
event_day 是此事件发生的日期,in_time 是员工进入办公室的时间,而 out_time 是他们离开办公室的时间。in_time 和 out_time 的取值在1到1440之间。题目保证同一天没有两个事件在时间上是相交的,并且保证 in_time 小于 out_time。

计算每位员工每天在办公室花费的总时间(以分钟为单位)。 请注意,在一天之内,同一员工是可以多次进入和离开办公室的。 在办公室里一次进出所花费的时间为out_time 减去 in_time。


我那不值一提的想法:

  • 首先梳理表内容,题干给了一张员工表,记录了员工id,表示时间发生的日期,其中员工进入办公室的时间,也有离开办公室的时间。
  • 其次分析需求,需要计算每位员工每天在办公室话费的总时间。由于一位员工可以在一天内多次出入办公室,所以需要用每次的out_time减去in_time得到每次的时间,然后再将每次的总时间相加。
  • 对于每天每位员工来说,需要用group by emp_id,event_day
  • 对于计算时间总公式,也就是sum(out_time - in_time)
select event_day as day,emp_id,sum(out_time - in_time) as total_time
from Employees 
group by emp_id,event_day

结果:

【力扣白嫖日记】SQL_第1张图片


总结:

能运行就行。


你可能感兴趣的:(力扣刷题,leetcode,sql,数据库)