SQL/리트코드 문제풀이

[LeetCode] 1661. Average Time of Process per Machine

너지살 2024. 5. 16. 15:59

 

 

 

문제 출저

https://leetcode.com/problems/average-time-of-process-per-machine/?envType=study-plan-v2&envId=top-sql-50

 

 

 

문제 풀이

각 기계가 프로세스를 완료하는데 걸리는 평균 시간을 구해야 합니다. 

완료하는데 걸리는 시간은 종료 시간에서 시작 시간을 뺀 값 입니다. (완료 시간 = 종료 시간 - 시작 시간)

평균 시간은 소수점 이하 3자리로 표현합니다.

 

s, ,e 테이블 2개를 조인합니다. 

machine_id, process_id 동일하게 조인합니다. 

s 테이블은 시작 시각을 나타내고 e 테이블은 종료 시간을 나타냅니다.

avg(e.timestamp - s.timestamp)를 통해 평균을 구합니다. 

round를 통해 소수점 이하 3자리로 표현합니다. 

 

 

 

SQL

/*
각 기계가 프로세스를 완료하는 데 걸리는 평균 시간을 구한다. 
완료하는데 걸리는 시간 종료 - 시작 
평균 시간은 소수점 이하 3자리에서 반올림한다. 
시작 시간과 종료 시간을 join을 통해서 구한다. 
*/

select
    s.machine_id,
    round(avg(e.timestamp - s.timestamp), 3) as processing_time
from
    Activity as s 
join   
    Activity as e on s.machine_id = e.machine_id 
    and s.process_id = e.process_id
    and s.activity_type = 'start'
    and e.activity_type = 'end'
group by 
    s.machine_id