文章目录

  • 1. 题目
  • 2. 解题

1. 题目

表: 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位小数.

具体参考例子如下:

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     |
+------------+------------+---------------+-----------+

Result table:

+------------+-----------------+
| 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-time-of-process-per-machine
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先求总时间,然后除以进程数量
# Write your MySQL query statement below
select t1.machine_id, round(tot/num,3) processing_time
from
(select machine_id, sum(if(activity_type='start', -timestamp, timestamp)) totfrom Activity agroup by machine_id
) t1 left join
(select b.machine_id, count(distinct b.process_id) num from Activity b group by machine_id
) t2
on(t1.machine_id=t2.machine_id)

234 ms 0 B MySQL


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode MySQL 1661. 每台机器的进程平均运行时间相关推荐

  1. mysql在同一台机器上实现主从_MySQL 5.7主从搭建(同一台机器)

    主从复制原理:复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例.1)主服务器将所有数据和结构更改记录到二进制日志中.2)从属服务器从主服务器请求该二进制日志并在本地应用其内容 ...

  2. mysql 机器复制_MySQL复制在同一台机器上

    这怎么解释MySQL在同一台机器上的复制. 你有很大的命中,数据库驱动的站点和性能,冗余,安全性现在被考虑在内. DBA现在由很多手指输入,寻求一些很好的解决方案,使幸福的脸孔.所以这里有一些单词,如 ...

  3. php和mysql不在一台机器上_MySQL_在同一台机器上运行多个 MySQL 服务,**************************************** - phpStudy...

    在同一台机器上运行多个 MySQL 服务 ********************************************************** 第一部分, 在一台服务器构建多mysql ...

  4. 在同一台机运行多个mysql 服务 多个主/从在同一主机_在同一台机器上运行多个 MySQL 服务...

    在同一台机器上运行多个 MySQL 服务 ********************************************************** 第一部分, 在一台服务器构建多mysql ...

  5. mysql三台机群集_MySQL Cluster 3台机器搭建集群环境

    最后还是通过三台机器实现了linux下的mysql集群,这边首先要感谢众多网络上提供帮助教程,虽然有些没有经过实践无法真正达到效果,但是这次给MGM项目的这个开头还是不错. 书归正传,这边用的是vmw ...

  6. linux一台机器如何安装两个mysql,在一台linux机器上启动两个mysql实例

    环境:linux主机上已经yum安装了mysql,而且数据库正在运行. 在不关闭/重启mysql的情况下,重新启动一个新的mysql实例,使用3307端口,实现一台机器上同时运行两个数据库实例. 1. ...

  7. 安装两个mysql3308_在同一台机器上安装两个版本的MySQL

    在同一台机器上安装两个版本的MySQL (2006-07-26 15:29:36) 今天在已安装了MySQL5的机器上装了一个MySQL4,是用源代码编译的方式安装的.有几要注意的. 1.在配置的时候 ...

  8. php和mysql不在同一服务器上_编译php时,如何解决mysql不在同一台机器上的操作问题?...

    我们学习lamp的时候,是把mysql和php安装在了同一台机器上,编译php的时候,需要通过参数--with-mysql来指定mysql的安装路径. 但同学们有没有想过,在生产环境中,通常php和m ...

  9. 如何实现一台机器上运行多个MySQL实例?

    在一台机器上一个MySQL服务器运行多个MySQL实例有什么好处?这里我先入为主给大家介绍这样做至少存在两个好处(看完这篇文章后理解会更透彻): (1)减轻服务器链接负担 (2)为不同的用户提供不同的 ...

最新文章

  1. python监听文件更改记录_如何用机器人监听老板微信?
  2. .net与数据库知识点
  3. 初识片选信号和中断控制器
  4. 七周三次课(11月29日) 10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法...
  5. 多选框实现单选效果,并且把中文值赋值到特定输入框
  6. [云炬python3玩转机器学习]4-7机器学习算法训练和测试样本集数据同时归一化
  7. ajax 公共请求头部,ajax请求中全局增加请求头,如常见的token
  8. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——习题7-12
  9. Spring——Spring工具类
  10. 一代杰出科学家--钱学森去世了
  11. python中面向对象的ui_python中面向对象
  12. c++ namespace_c++语法2、c执行命名空间输入输出
  13. 在ant中将依赖jar包一并打包的方法
  14. 【原创】打造基于Dapper的数据访问层
  15. Matlab信号处理,小波降噪
  16. gatk过滤_GATK使用方法详解(原始数据的处理)
  17. 入门级练习题(1-15)
  18. 单片机复位电路,隐藏着这么多门道
  19. 流程控制之顺数结构和选择结构
  20. UnicodeEncodeError: ‘charmap‘ codec can‘t encode characters in position 0-1: character maps to <unde

热门文章

  1. 阿里巴巴中文站架构设计实践(何崚)图书
  2. druid.properties文件的配置
  3. 闭包---在函数内部再定义一个函数
  4. ctypes python_[python学习之路]ctypes,Python
  5. micropython web ws2812_MicroPython实例之TPYBoard v102炫彩跑马灯WS2812B
  6. java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示
  7. 基于Hi3516A的H265 IPC LIVE555 开发基本原理
  8. springboot创建parent_理解spring-boot-starter-parent
  9. VMWare虚拟机NAT模式静态IP联网配置
  10. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)