-
leeCode - 1661. Average Time of Process per MachineSQL 문제 2024. 2. 27. 14:05
문제
There is a factory website that has several machines each running the same number of processes. Write a solution to find the average time each machine takes to complete a process.
The time to complete a process is the 'end' timestamp minus the 'start' timestamp. The average time is calculated by the total time to complete every process on the machine divided by the number of processes that were run.
The resulting table should have the machine_id along with the average time as processing_time, which should be rounded to 3 decimal places.
Return the result table in any order.# Write your MySQL query statement below SELECT machine_id, round(sum(if(activity_type = 'start', -timestamp , timestamp)) / count(distinct process_id),3) as processing_time FROM Activity GROUP BY machine_id ORDER BY machine_id asc
오랜만에 sql 문제를 풀던 중 막힌 문제.
activity_Type인 'start'와 'end'의 timestamp 차를 구하는 문제였다.
여러가지 시도하다가 실패하여 아래 부분의 논의라는 부분을 봤는데
다른 사람들 사용한 재귀를 통한 문제 풀이법도 있었지만( 내 취향이 아님)
if문을 통한 방법이 가장 신박하고 이해가 잘 되는 코드라서 참고하여 문제를 풀었다.if를 통하여 activity_type이 start인 경우에는 timestamp를 음수로 취한다.
이는 우리가 평균을 구하는 문제에서 end - start의 timestamp의 합을 갯수로 나누는 것이기에
음수를 취하고 모두 더하면 자동으로 -start + end 형태가 되어서 문제가 해결된다.
나는 왜 이런 생각을 못했지?
'SQL 문제' 카테고리의 다른 글
leecode - 1280. Students and Examinations (0) 2024.02.27 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) 2024.01.29 프로그래머스 - 입양 시각 구하기(2)_set @ (0) 2024.01.09 프로그래머스 - 조건에 부합하는 중고거래 댓글 조회하기 (0) 2024.01.09 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기 (0) 2024.01.09