本文主要是介绍力扣数据库题库学习(5.4日)--1661. 每台机器的进程平均运行时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1661. 每台机器的进程平均运行时间
问题链接
解题思路
现在有一个工厂网站由几台机器运行,每台机器上运行着 相同数量的进程 。编写解决方案,计算每台机器各自完成一个进程任务的平均耗时。
完成一个进程任务的时间指进程的’end’ 时间戳 减去 ‘start’ 时间戳。平均耗时通过计算每台机器上所有进程任务的总耗费时间除以机器上的总进程数量获得。
结果表必须包含machine_id(机器ID) 和对应的 average time(平均耗时) 别名 processing_time,且四舍五入保留3位小数。
思路:首先需要对数据按照机器分组,然后查出每台机器的进程,找到进程开始与结束进程的时间,并计算出总时间和平均时间。
这里我们根据activity_type将表拆分为两张,然后链接两表,获取到两个timestamp,并将数据按照machine_id分组,使用ROUND与AVG函数获取数据。具体操作如下
问题答案
具体的sql语句如下:
SELECT A1.machine_id,ROUND(AVG(A2.timestamp-A1.timestamp),3) AS processing_time
FROM Activity A1
LEFT JOIN Activity A2 ON A1.machine_id = A2.machine_id AND A1.process_id = A2.process_id AND A2.activity_type = "end"
WHERE A1.activity_type = "start"
GROUP BY A1.machine_id
;
总结
这道题主要是考我们如何将完整的一张表拆分为两张临时表来处理数据的能力。在以后的题目中,如果数据可以根据记录中的字段拆分为多张表,我们都可以使用【拆分+链接】这种方案
这篇关于力扣数据库题库学习(5.4日)--1661. 每台机器的进程平均运行时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!