1661. 每台机器的进程平均运行时间

SQL架构

表: Activity

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| machine_id     | int     |
| process_id     | int     |
| activity_type  | enum    |
| timestamp      | float   |
+----------------+---------+
该表展示了一家工厂网站的用户活动.
(machine_id, process_id, activity_type) 是当前表的主键.
machine_id 是一台机器的ID号.
process_id 是运行在各机器上的进程ID号.
activity_type 是枚举类型 ('start', 'end').
timestamp 是浮点类型,代表当前时间(以秒为单位).
'start' 代表该进程在这台机器上的开始运行时间戳 , 'end' 代表该进程在这台机器上的终止运行时间戳.
同一台机器,同一个进程都有一对开始时间戳和结束时间戳,而且开始时间戳永远在结束时间戳前面.

现在有一个工厂网站由几台机器运行,每台机器上运行着相同数量的进程. 请写出一条SQL计算每台机器各自完成一个进程任务的平均耗时.

完成一个进程任务的时间指进程的'end' 时间戳 减去 'start' 时间戳. 平均耗时通过计算每台机器上所有进程任务的总耗费时间除以机器上的总进程数量获得.

结果表必须包含machine_id(机器ID) 和对应的 average time(平均耗时) 别名 processing_time, 且四舍五入保留3位小数.

以 任意顺序 返回表。

具体参考例子如下。

示例 1:

输入:
Activity table:
+------------+------------+---------------+-----------+
| machine_id | process_id | activity_type | timestamp |
+------------+------------+---------------+-----------+
| 0          | 0          | start         | 0.712     |
| 0          | 0          | end           | 1.520     |
| 0          | 1          | start         | 3.140     |
| 0          | 1          | end           | 4.120     |
| 1          | 0          | start         | 0.550     |
| 1          | 0          | end           | 1.550     |
| 1          | 1          | start         | 0.430     |
| 1          | 1          | end           | 1.420     |
| 2          | 0          | start         | 4.100     |
| 2          | 0          | end           | 4.512     |
| 2          | 1          | start         | 2.500     |
| 2          | 1          | end           | 5.000     |
+------------+------------+---------------+-----------+
输出:
+------------+-----------------+
| machine_id | processing_time |
+------------+-----------------+
| 0          | 0.894           |
| 1          | 0.995           |
| 2          | 1.456           |
+------------+-----------------+
解释:
一共有3台机器,每台机器运行着两个进程.
机器 0 的平均耗时: ((1.520 - 0.712) + (4.120 - 3.140)) / 2 = 0.894
机器 1 的平均耗时: ((1.550 - 0.550) + (1.420 - 0.430)) / 2 = 0.995
机器 2 的平均耗时: ((4.512 - 4.100) + (5.000 - 2.500)) / 2 = 1.456

max min:

select
machine_id,round(avg(processing_time),3) processing_time
from
(
select
machine_id,process_id,max(timestamp)-min(timestamp) processing_time
from
Activity
group by
machine_id,process_id
) s1
group by machine_id

用 if 的技巧:

SELECT
machine_id, round(avg(times) * 2, 3) processing_time  # 此时 是 除以了4 所以要 *2
FROM
(SELECT
    machine_id, process_id,
    IF(activity_type = 'start', round(-`timestamp`, 3), round(`timestamp`, 3)) times
    from
    Activity
) t
GROUP BY machine_id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器运行报告模板 1.设备信息 "设备 " " "硬件配置信息 " "机型号 " " "CPU " " "内存 " " "硬盘 " " "系统信息 " "操作系统 " " "IP " " "主机名 " " 2、服务器硬件检查 "检查项 "检查操作 "参考标准 "运行状况 " "机柜或者服"观察机柜以及机器上的防尘"是否在防尘上堵塞" 正常 不正常 " "务器上的防"网上的灰尘 "导致气流不畅。 " " "尘网 " " " " "系统风扇运"观察并用手感觉进风和出风"主机和磁盘柜的所" 正常 不正常 " "转检查 "是否正常 "有风扇运转正常。" " "系统运装噪"仔细听系统运转声音 "噪音是否过大,有" 正常 不正常 " "音检查 " "无异常声 " " " " "音 " " "系统电源指"观察液晶面板、电源指示灯"液晶面板、电源指" 正常 不正常 " "示灯检查 "、硬盘报警灯等显示 "示灯、硬盘报警灯" " " " "等显示情况正常 " " "服务器硬盘"硬盘指示灯指示是否正常,"绿色闪烁 " 正常 不正常 " "工作状态 "一般绿色为正常 " " " "服务器网卡"Ping命令检查;观察法;文"网卡指示灯正常闪" 正常 不正常 " "工作状态 "件传输测试。 "烁;丢包情况;双" " " " "工模式。 " " "服务器散热"靠近服务器检查是否有热风" " 正常 不正常 " "检测 "吹出 " " " "服务器电源"电源连接线是否有松动、接" " 正常 不正常 " "连接检查 "触不良等情况 " " " "服务器外壳"服务器整体是否有移动或损" " 正常 不正常 " "整体检查 "害痕迹 " " " 3、操作系统及应用系统检查 "检查项 "检查操作 "参考标准 "运行状况 " "操作系统启动和运 "加电启动 " " 正常 不正常 " "行状况检查 " " " " "检查系统内存利用 "通过windows操作系统"任 "检测三次,每次5分" 正常 不正常 " "率 "务管理器" "钟,记录大约平均 " " " " "的利用率 " " "检查系统CPU利用率"通过windows操作系统"任 "检测三次,每次5分" 正常 不正常 " " "务管理器" "钟,记录大约平均 " " " " "的利用率 " " "操作系统版本检查 "执行命令winver.exe " " 正常 不正常 " "主机连接系统网络 "在其它机器上采用ping命 "观察5分钟是否有丢" 正常 不正常 " "情况 "令 "包情况 " " "主机网络配置情况 "执行命令ipconfig /all "IP地址、子网掩码 " 正常 不正常 " " " "正确 " " "系统账户检查 "利用administrator身份、"能够正常登陆到系 " 正常 不正常 " " "口令登陆 "统 " " "应用程序启动和运 "应用使用测试 " " 正常 不正常 " "行情况 " " " " 4、检查记录 (1)内存、cpu使用情况巡检 用命令taskmgr.exe打开任务管理器 检查方法: Windows下使用任务管理器,记录占用内存、cpu最多的前五位进程或应用程序; 性能 CPU使用情况:表明处理器工作时间百分比的图表,该计数器是处理器活动的主要指示器 ,查看该图表可以知道当前使用的处理时间是多少。 CPU使用记录:显示处理器的使用程序随时间的变化情况的图表,图表中显示的采样情况 取决于"查看"菜单中所选择的"更新速度"设置值,"高"表示每秒2次,"正常"表示每两秒 1次,"低"表示每四秒1次,"暂停"表示不自动更新。 PF使用情况:正被系统使用的页面文件的量。 页面文件使用记录:显示页面文件的量随时间的变化情况的图表,图表中显示的采样情 况取决于"查看"菜单中所选择的"更新速度"设置值。 总数:显示计算机上正在运行的句柄、线程、进程的总数。 认可用量:分配给程序和操作系统的内存,由于虚拟内存的存在,"峰值"可以超过最大 物理内存,"总数"值则与"页面文件使用记录"图表中显示的值相同。 物理内存:计算机上安装的总物理内存,也称RAM,"可用"表示可供使用的内存容量," 系统缓存"显示当前用于映射打开文件的页面的物理内存。 内核内存:操作系统内核和设备驱动程序所使用的内存,"页面"是可以复制到页面文件 中的内存,由此可以释放物理内存;"非分页"是保留在物理内存中的内存,不会被复制 到页面文件中。 (2)硬盘使用情况, 检查方法:Windows下通过查看'我的电脑'—'管理'—'磁盘管理'可以查看磁盘分区与 对应分区使用情况, A、要定期清理磁盘垃圾文件,选择分区'属性'—'常规'—'磁盘清理'。 B、定期检查磁盘的错误信息,选择分区'属性'—'工具'—'开始检查'。 C、定期

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值