当前位置: 首页 > article >正文

SQL-leetcode—1661. 每台机器的进程平均运行时间

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

表: 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’ 代表该进程在这台机器上的终止运行时间戳。
同一台机器,同一个进程都有一对开始时间戳和结束时间戳,而且开始时间戳永远在结束时间戳前面。

现在有一个工厂网站由几台机器运行,每台机器上运行着 相同数量的进程 。编写解决方案,计算每台机器各自完成一个进程任务的平均耗时。

完成一个进程任务的时间指进程的’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

题解

现在有一个工厂网站由几台机器运行,每台机器上运行着 相同数量的进程 。编写解决方案,计算每台机器各自完成一个进程任务的平均耗时。

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

  • 先求任务时间,end-start,怎么减呢?把start * -1 ,再sum即可

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

  • avg+round

方法一 子查询+group by

selectmachine_id ,round(avg(sum_ts),3) as processing_time
from (selectmachine_id,process_id,sum(if(activity_type='end',timestamp,timestamp*(-1))) as sum_tsfrom Activity group by machine_id,process_id
) tmp group by machine_id

方法二 lag+group by

with tmp as (selectmachine_id,process_id,timestamp as end_ts-- 这里为啥加order by,避免end在前start在后的情况,因为这里用的lag下移,lag(timestamp,1,0) over(partition by machine_id,process_id order by activity_type) as start_tsfrom Activity
)
select machine_id,round(avg(end_ts - start_ts),3) as processing_time from tmp 
where start_ts<>0 
group by machine_id

相关文章:

SQL-leetcode—1661. 每台机器的进程平均运行时间

1661. 每台机器的进程平均运行时间 表: Activity ----------------------- | Column Name | Type | ----------------------- | machine_id | int | | process_id | int | | activity_type | enum | | timestamp | float | ----------------------- 该表展示了一家工厂网站的…...

Linux例行任务:at 、cron、 /etc/contain 辨析

文章目录 一、at&#xff1a;一次性任务调度1. **基本用法**2. **管理任务**3. **权限控制** 二、cron&#xff1a;周期性任务调度1. **用户级任务**2. **系统级任务**3. **特殊字符串**4. **权限控制**5. **环境问题** 三、容器环境中的例行任务1. **在容器内运行 cron**2. **…...

Vue2中常用指令

文章目录 Vue2中常用指令1. v-text 动态渲染纯文本内容1. 作用2. 基本用法3. 示例4. 注意事项 2. v-html 动态渲染 HTML 内容1. 作用2. 基本用法3. 示例4. 注意事项 3. v-bind 动态绑定 HTML 属性1. 作用2. 基本用法3. 示例4. 注意事项5. 绑定class属性的用法6. 绑定style属性的…...

Sequence to Sequence model

基础模型 基础模型是用RNN模型&#xff0c;前部分是encoder用来寻找法语输入的编码&#xff0c;后半部分是decoder用来生成英文翻译作为输出&#xff0c;每次输出一个单词&#xff0c;直到输出结束标志如EOS。 下面是另一个例子&#xff0c;在CNN模型输出层之前会输出图片的向…...

PHP 超级全局变量

PHP 超级全局变量 引言 在PHP编程中&#xff0c;超级全局变量&#xff08;Superglobals&#xff09;是一类特殊的变量&#xff0c;它们在任何函数、类或文件中都可以访问。这些变量在PHP的全局作用域中始终可用&#xff0c;为开发者提供了处理HTTP请求和响应的强大工具。本文…...

如何在Vscode中接入Deepseek

在VS Code&#xff08;Visual Studio Code&#xff09;中接入DeepSeek&#xff0c;可以按照以下步骤进行操作&#xff1a; 一、准备工作 确保VS Code为最新版本&#xff1a; DeepSeek可能依赖于VS Code的某些最新功能或修复&#xff0c;因此建议先将VS Code更新到最新版本。注…...

6.appender

文章目录 一、前言二、源码解析AppenderUnsynchronizedAppenderBaseOutputStreamAppenderConsoleAppenderFileAppenderRollingFileAppenderFileNamePattern 三、总结 一、前言 前一篇文章介绍了appender、conversionRule、root和logger节点的解析, 为的是为本篇详细介绍它们的…...

Golang的消息队列架构

一、消息队列的定义和作用 消息队列是一种在不同组件之间传递消息的通信机制。它可以解耦系统的各个部分&#xff0c;提高系统的可靠性和扩展性。消息队列可以在系统之间传递消息&#xff0c;并且在消息发送者和消息接收者之间进行异步通信&#xff0c;使得系统可以更加灵活和高…...

如何在Servlet容器中使用HttpServletResponse?

HttpServletResponse 是 Java Servlet API 中的一个接口&#xff0c;它代表了服务器对客户端的响应。通过 HttpServletResponse 对象&#xff0c;可以设置响应的状态码、发送数据到客户端&#xff08;如 HTML 页面、文件等&#xff09;、添加响应头信息等。下面是如何在 Servle…...

DeepSeek自然语言处理(NLP)基础与实践

自然语言处理(Natural Language Processing, NLP)是人工智能领域的一个重要分支,专注于让计算机理解、生成和处理人类语言。NLP技术广泛应用于机器翻译、情感分析、文本分类、问答系统等场景。DeepSeek提供了强大的工具和API,帮助我们高效地构建和训练NLP模型。本文将详细介…...

GESP5级语法知识(十一):高精度算法(一)

高精度加法&#xff1a; #include<iostream> #include<string> #include<algorithm> using namespace std; const int N501;//高精度数的最长长度 //c[]a[]b[]:高精度加法方案一&#xff1a;对应位相加&#xff0c;同时处理进位 void h_add_1(int a[],int b…...

【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用

一、场景描述 我想写一个轮播图的程序&#xff0c;只是把bootstrap里面的轮播图拉过来就用上感觉不是很合适&#xff0c;然后我就想自己写自动轮播&#xff0c;因此&#xff0c;这篇文章里面只是自动轮播的部分&#xff0c;没有按键跟自动轮播的衔接部分。 Ps: 本文用的是函数…...

PYYAML反序列化详解

前言 最近看了很多pyyaml反序列化的漏洞利用&#xff0c;但是对漏洞怎么来的&#xff0c;没有进行很详细的分析&#xff0c;所以今天刚好学习一下反序列化的原理 Yaml基本语法 一个 .yml 文件中可以有多份配置文件&#xff0c;用 --- 隔开即可对大小写敏感YAML 中的值&#x…...

【离散数学上机】T235,T236

T235题目&#xff1a;输入集合A和B&#xff0c;输出A到B上的所有单射函数。 问题描述 给定非空数字集合A和B&#xff0c;求出集合A到集合B上的所有单射函数。 输入格式 第一行输入m和n&#xff08;空格间隔&#xff09;&#xff0c;分别为集合A和集合B中的元素个数&#xff1b;…...

LeeCode题库第十八题

项目场景&#xff1a; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&…...

Zookeeper 和 Redis 哪种更好?

目录 前言 &#xff1a; 什么是Zookeeper 和 Redis &#xff1f; 1. 核心定位与功能 2. 关键差异点 (1) 一致性模型 (2) 性能 (3) 数据容量 (4) 高可用性 3. 适用场景 使用 Zookeeper 的场景 使用 Redis 的场景 4. 替代方案 5. 如何选择&#xff1f; 6. 常见误区 7. 总结 前言…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_localtime 函数

ngx_localtime 函数 声明 在 src\os\unix\ngx_time.h 中&#xff1a; void ngx_localtime(time_t s, ngx_tm_t *tm); 定义 在 src/os/unix/ngx_time.c 中 void ngx_localtime(time_t s, ngx_tm_t *tm) { #if (NGX_HAVE_LOCALTIME_R)(void) localtime_r(&s, tm);#elsengx_tm…...

SpringBoot初始化8个常用方法

在 Spring Boot 中&#xff0c;初始化方法通常是在应用程序启动时被调用的&#xff0c;可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法&#xff1a; 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…...

vue组件中各种类型之间的传值

在Vue CLI项目中&#xff0c;组件间的属性传值是一个常见的需求。以下是一些常用的传值方法和规范&#xff0c;以及相应的代码演示和解说&#xff1a; 一. 父组件向子组件传值&#xff08;Props&#xff09; 规范&#xff1a;父组件通过属性&#xff08;props&#xff09;向子…...

公然上线传销项目,Web3 的底线已经被无限突破

作者&#xff1a;Techub 热点速递 撰文&#xff1a;Yangz&#xff0c;Techub News 今天早些时候&#xff0c;OKX 将上线 PI 的消息在圈内引起轩然大波&#xff0c;对于上线被板上钉钉为传销盘子的「项目」 &#xff0c;Techub News 联系了 OKX 公关&#xff0c;但对方拒绝置评…...

GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件

在现代软件开发中&#xff0c;CI/CD&#xff08;持续集成与持续部署&#xff09;已成为提高开发效率和代码质量的核心实践。GitLab CI/CD 提供了强大的功能&#xff0c;帮助开发者自动化构建、测试和部署应用程序。而 .gitlab-ci.yml 文件是 GitLab CI/CD 配置的关键所在&#…...

C语言第18节:自定义类型——联合和枚举

1. 联合体 C语言中的联合体&#xff08;Union&#xff09;是一种数据结构&#xff0c;它允许在同一内存位置存储不同类型的数据。不同于结构体&#xff08;struct&#xff09;&#xff0c;结构体的成员各自占有独立的内存空间&#xff0c;而联合体的所有成员共享同一块内存区域…...

Python的元组和列表的区别是什么?

1. 定义和语法形式 列表&#xff08;List&#xff09;&#xff1a;列表是一种可变的序列类型&#xff0c;使用方括号 [] 来定义。例如&#xff1a;my_list [1, 2, 3] 。列表中的元素可以是不同的数据类型&#xff0c;并且可以包含嵌套的列表、元组等其他数据结构。元组&#x…...

解锁网络安全:穿越数字世界的防护密码

个人主页&#xff1a;java之路-CSDN博客(期待您的关注) 目录 网络安全&#xff1a;数字时代的基石 网络安全面面观 &#xff08;一&#xff09;定义与范畴 &#xff08;二&#xff09;发展历程 网络安全面临的威胁 &#xff08;一&#xff09;恶意软件肆虐 &#xff08;二…...

利用二分法+布尔盲注、时间盲注进行sql注入

一、布尔盲注&#xff1a; import requestsdef binary_search_character(url, query, index, low32, high127):while low < high:mid (low high 1) // 2payload f"1 AND ASCII(SUBSTRING(({query}),{index},1)) > {mid} -- "res {"id": payloa…...

GPT-SWARM和AgentVerse的拓扑结构和交互机制

GPT-SWARM和AgentVerse的拓扑结构和交互机制 拓扑结构区别 GPT-SWARM:采用图结构,将语言智能体系统描述为可优化的计算图。图中的每个节点代表一个操作,如语言模型推理或工具使用等特定功能,边则描述了操作之间的信息流,代表智能体之间的通信渠道。多个智能体连接形成的复…...

python爬虫解决无限debugger问题

方法一 关闭定时任务 关闭断点执行代码打开断点 # 无限debugger产生原因 # 1. web开发者工具打开 # 2. js代码中有debugger # 3. js有定时处理[推荐] for(let i0;i<99999;i){window.clearInterval(i)}方法二 关闭breakpoint 方法三 修改JS代码 使用fiddler&#xff0c;抓…...

使用rknn进行facenet部署

文章目录 开源仓库pth转onnxnetron可视化onnx转rknnC++实现开源仓库 https://github.com/bubbliiiing/facenet-pytorch pth转onnx 修改facenet网络的forward函数代码 修改前 def forward(self, x, mode = "predict"):if mode ==...

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…...

Linux下的进程切换与调度

目录 1.进程的优先级 优先级是什么 Linux下优先级的具体做法 优先级的调整为什么要受限 2.Linux下的进程切换 3.Linux下进程的调度 1.进程的优先级 我们在使用计算机的时候&#xff0c;通常会启动多个程序&#xff0c;这些程序最后都会变成进程&#xff0c;但是我们的硬…...