📝 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 문제 해결 방법
- GROUP BY를 사용하여 emp_id와 event_day별로 데이터를 그룹화합니다.
- SUM(out_time - in_time)을 계산하여 해당 날짜의 총 시간을 구합니다.
- 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
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 1873. Calculate Special Bonus (0) | 2025.03.17 |
---|---|
[LeetCode] 1795. Rearrange Products Table (0) | 2025.03.12 |
[LeetCode] 1693. Daily Leads and Partners (0) | 2025.03.10 |
[LeetCode] 1667. Fix Names in a Table (0) | 2025.03.10 |
[LeetCode] 1587. Bank Account Summary 2 (0) | 2025.03.10 |