본문 바로가기

[LeetCode] 1741. Find Total Time Spent by Each Employee

by qwee0328 2025. 3. 11.

📝 1741. Find Total Time Spent by Each Employee

🔹 각 직원이 보낸 총 시간 찾기

각 직원이 매일 사무실에서 보낸 총 시간을 분 단위로 계산하는 솔루션을 작성하세요. 직원은 하루 동안 두 번 이상 출입할 수 있습니다. 단일 항목에 대해 사무실에서 보낸 시간은 out_time - in_time입니다.
어떤 순서로든 결과 테이블을 반환합니다.

 

 

📝 문제 설명

Find Total Time Spent by Each Employee(1741번) 문제는 직원이 하루 동안 사무실에서 보낸 총 시간을 분 단위로 계산하는 문제입니다.
직원은 하루 동안 여러 번 출입할 수 있으며, 각 출입 기록에서 (out_time - in_time)을 계산한 후 합산해야 합니다.

최종 결과는 어떤 순서로든 반환할 수 있습니다.

 

📊 테이블 구조

Employees 테이블

Column Name Type
emp_id int
event_day date
in_time int
out_time int

 

 

💡 SQL 문제 해결 방법

  1. GROUP BY를 사용하여 emp_id와 event_day별로 데이터를 그룹화합니다.
  2. SUM(out_time - in_time)을 계산하여 해당 날짜의 총 시간을 구합니다.
  3. ORDER BY 조건이 없으므로, 어떤 순서로든 결과를 반환할 수 있습니다.

 

반응형

 

🖥️ SQL 풀이

  SELECT event_day AS day
       , emp_id
       , SUM(out_time - in_time) AS total_time
    FROM Employees
GROUP BY emp_id
       , event_day

 

 

🔍 쿼리 분석

  • GROUP BY emp_id, event_day: 직원 ID와 날짜별로 데이터를 그룹화합니다.
  • SUM(out_time - in_time): 각 출입 기록의 시간을 합산하여 하루 동안 사무실에서 보낸 총 시간을 계산합니다.
  • SELECT event_day AS day: 출력 형식을 문제에서 요구한 대로 event_day를 day로 변경합니다.

 

📌 실행 예제

📊 입력 데이터

Employees 테이블

emp_id event_day in_time out_time
1 2020-11-28 4 32
1 2020-11-28 55 200
1 2020-12-03 1 42
2 2020-11-28 3 33
2 2020-12-09 47 74

 

쿼리 실행 결과

day emp_id total_time
2020-11-28 1 173
2020-11-28 2 30
2020-12-03 1 41
2020-12-09 2 27

 

  • 직원 1은 2020-11-28에 총 (32 - 4) + (200 - 55) = 173 시간을 보냈습니다
  • 직원 2는 2020-11-28에 총 (33 - 3) = 30 시간을 보냈습니다.
  • 직원 1은 2020-12-03에 총 (42 - 2) = 41 시간을 보냈습니다.
  • 직원 2는 2020-12-09에 총 (74 - 47) = 27 시간을 보냈습니다.

 

🎯 결론

이 문제는 GROUP BY와 SUM()을 활용하여 날짜별 직원 근무 시간을 계산하는 방법을 연습할 수 있습니다.
특히 시간 차이를 계산하는 방법날짜별 그룹화(GROUP BY)가 중요한 개념입니다.

 

 


 

 

더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀

728x90
반응형