MySQL 限制、组和 AVG 查询

2023-12-27

这里有一个谜题给你:

我将集群计算的统计数据保存在名为“jobs”的 MySQL 表中。每个作业行都有一个执行作业的主机(不是唯一的)、以秒为单位的作业执行时间以及作为 PK 的唯一整数,因此我可以简单地通过订购 PK 来订购已完成的作业。

截至目前,使用平均值和分组依据,我可以找到每个主机在所有已完成作业中的平均执行时间(以秒为单位)。我想要的是每个主机最后五个作业的平均时间,而不是平均每个主机的所有执行时间。

有各种各样的操作和分组示例,还有很多限制操作的示例,但是有没有办法将这两者结合到一个相当简单的 MySQL 查询中?

编辑:如果我不清楚,我想要主机 1 的平均 5 次执行时间,以及主机 2 的平均 5 次执行时间,等等。


我最初的反应是使用 LIMIT 将平均值限制为 5 个结果,这让我建议:

select a.host, avg(a.execution_time) from (select id, execution_time, host from jobs order by id desc limit 5) a group by a.host;

但很明显,这将平均值限制为最近 5 个作业,而不是每个主机最近的 5 个作业。

在不使用某种存储过程的情况下,使用 LIMIT 来限制平均值似乎很困难。这导致我考虑使用 mysql 变量为每个作业分配每个主机的完成顺序或位置。

这是未经测试的,但它所阐述的理论应该是一个很好的起点:

首先,我们应该根据每个作业的宿主为其分配一个位置:

select
  host, 
  execution_time,
  @current_pos := if (@current_host = host, @current_pos, 0) + 1 as position,
  @current_host := host
from
  (select @current_host := null, @current_pos := 0) set_pos,
  jobs
order by
  host,
  id desc;

建立位置后,只需选择聚合函数,将结果限制为前 5 个位置:

select
  jt.host,
  avg(jt.execution_time)
from
  (
  select
    host, 
    execution_time,
    @current_pos := if (@current_host = host, @current_pos, 0) + 1 as position,
    @current_host := host
  from
    (select @current_host := null, @current_pos := 0) set_pos,
    jobs
  order by
    host,
    id desc
  ) jt
where
  jt.position <= 5
group
  by host;

请告诉我这是否适合您,或者是否还有其他我没有考虑到的方面。这是一个有趣的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 限制、组和 AVG 查询 的相关文章

  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • oursql 中的参数化查询

    如果有人能告诉我是否可以使用命名占位符进行参数化查询 我将不胜感激oursql 一个用于与 MySQL 数据库交互的 python 模块 例如 我尝试了一种可以与 sqlite3 一起使用的查询 c execute select from
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 连接到 OpenShift (Redhat Paas) mysql 实例

    我正在尝试将我的 C 应用程序与 openshift 数据库连接 但我得到了这个例外conn Open Eccezione gt MySql Data MySqlClient MySqlException 0x80004005 Unable
  • MySQL 和 PHP 参数 1 作为资源

    好吧 当我运行下面提到的代码时 PHP 向我抛出此错误 在日志中 Error mysql num rows 期望参数 1 为资源 第 10 行 place 中给出的字符串 9 11号线 queryFP SELECT FROM db coun
  • JDBC 错误:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我在 Java Eclipse 中收到错误消息 我在 MySql 中有一个数据库 它有列 String user name int id time int id desk int user password 我想
  • MySQL - 从数字列表中选择在表的 id 字段中没有对应项的数字

    我有一个数字列表 例如 2 4 5 6 7 我有一个表 foos 带有 foos ID 包括 1 2 3 4 8 9 我想获取我的号码列表 并在我的表的 ID 字段中找到那些没有对应项的号码 实现此目的的一种方法是创建一个表格栏 在 ID
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • mysql 如何将 varchar(10) 转换为 TIMESTAMP?

    我已将所有日期存储到数据库中varchar 10 现在我想将它们转换为 TIMESTAMP 当我运行sql时 ALTER TABLE demo3 CHANGE date date TIMESTAMP NOT NULL 它提醒 1292 In
  • CakePHP 查找 - 按字符串到整数排序?

    我想使用 CakePHP 从数据库中提取照片数组 按照片标题排序 0 1 2 3 我的查询当前看起来像 ss photos this gt Asset gt find all array conditions gt array kind g
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • MySQL如何获取unix时间戳的时间差

    我有一个保存值1506947452的变量 需要使用公式从该日期提取分钟 started data now date 但started date采用unix时间戳格式10位int数字 我以ajax形式收到并需要放入mysql查询i试试这个 S
  • 选择获取与 MySQL Group 中 max 对应的整行

    当我使用Max使用后查找特定 MySQL 组中字段的最大值GROUP BY 是否可以获取包含最大值的整行 我在处理一些论坛代码时偶然发现了这个线程 我想获取每个线程的最新帖子并将其显示在特定板的线程列表中 Quassnoi上面的回答对我非常
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的

随机推荐

  • 如何给UITextView实现搜索功能?

    我有40多个观点 各有各的观点UITexView 我想实现一个搜索功能 允许用户跨域搜索UITextViews 实际上 我什至不知道如何实现 1 的搜索功能UITextView 因此我不知道这是否可能 我已经在网上搜索并在这里寻找它 但没有
  • 锯齿状数组类型属性

    假设我有这样的财产 public int MyProperty get set 调用代码可以自由更改数组的值 而且还可以替换数组本身 通过隐藏设置器可以轻松防止这种情况 如下所示 public int MyProperty get priv
  • 用c++例子解释Facade模式?

    我已经与维基百科文章 http en wikipedia org wiki Facade pattern 并且似乎缺少代码示例的 C 版本 如果没有这个我就无法完全理解 Facade 模式 你能用 C 帮我解释一下吗 外观模式 为复杂的子系
  • 如何将标签添加到 Bootstrap 对话框页脚

    需要添加bootstrap页脚上的标签bootstrap3 dialog 根据本教程 http nakupanda github io bootstrap3 dialog 只能在页脚区域添加按钮 BootstrapDialog show t
  • NPM:找不到模块“uuid”

    当我尝试使用 npm 时 我收到此消息 gt npm module js 472 throw err Error Cannot found module uuid at Function Module resolveFilename mod
  • C# 中的多客户端/服务器聊天程序?

    客户将能够一对一和群组聊天 温和的房间 类似于 Skype 我将使用服务器来授权客户端 我的问题是哪个更好 WCF 或 TCPClient StreamReader 和 StreamWriter cheesr 我还没有使用过 WCF 但我可
  • 如何从 Grails 控制器和视图外部引用 Grails 域类字段?

    我有域类 class Child static hasMany toys Toy String name Set toys class Toy static belongsTo owner Child String name 在我的 JSP
  • 根据部分字符串选择数组键

    我有一个数组 在该数组中我有一个数组键 如下所示 show me 160该数组键可能会发生一些变化 因此有时页面可能会加载 并且数组键可能会发生变化show me 120 我想现在可以只字符串匹配数组键直到最后一个 这样我就可以检查最后一个
  • 从其他文档追加子元素

    在我的程序中 我必须创建一些文档创建器 并且我想将创建元素的功能拆分为多个类 每个类将创建一个元素 主要创建者将通过接口提取该元素并将其附加到主体 问题是我不想将任何参数传递给构造函数调用 例如 creator createDocument
  • window.URL.createObjectURL(blob);在我的应用程序中未定义

    我仅在我的应用程序中遇到此问题 与浏览器 IE 和 Chrome 无关 如果我检查window URL createObjectURL blob 在两个浏览器中任何其他页面的控制台中 其工作正常 但它window URL createObj
  • IntelliJ IDEA 在 JPQL 中突出显示带有“无法解析符号”的 @Entity 类名称

    IntelliJ IDEA 在 JPQL 中用红色突出显示持久的 Entity 类名称 无法解析符号 这会分散注意力并埋葬真正的问题 因此 例如 我在存储库中声明一个查询 private static final String READ B
  • Java 石头剪刀布游戏 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是编程新手 我正在尝试用 Java 编写一个非常简单的石头剪刀布游戏 它将编译并运行良好 但我希望说一些类似 无效的移动 再试一次
  • Python ABC 多重继承

    我认为代码比我用文字能更好地解释问题 这是 my abc py 中的代码 from abc import ABCMeta abstractmethod class MyABC object metaclass ABCMeta abstrac
  • 在 bot 目录中注册后,是否可以在 Microsoft Teams 或 Skype 中测试我的 Bot 应用程序但无需发布它?

    我已在 MS Bot 目录中注册了我的机器人应用程序 我可以使用 Bot Framework Emulator 与我的消息端点进行通信 但当我在 MS 团队和 Skype 中尝试同样的操作时 机器人没有回复我的消息 是的 这是可能的 你需要
  • 没有这样的文件来加载 active_record/associations/has_and_belongs_to_many_association

    我在 Gemfile 中添加了composite primary keys gem 在本地环境中它运行良好 但在 centos 机器上它会出现以下错误 在这两个环境中 Ruby 版本为 1 9 2p290 rubygems 版本为 1 3
  • 线段树数组 2 * 2 ^(ceil(log(n))) - 1 的内存如何?

    链接 http www geeksforgeeks org segment tree set 1 sum of given range http www geeksforgeeks org segment tree set 1 sum of
  • bash: ./eclipse: 无法执行二进制文件

    我正在使用 Ubuntu10 10 操作系统 并且我已经下载了 eclipse jee helios SR1 linux gtk x86 64 tar gz 我的电脑是64位机 当我解压 Eclipse 并尝试运行时 eclipse从命令行
  • 为什么这种随机生成图的方式不公平?

    我的目标是生成一个由 n 个顶点组成的有向图 使得每个顶点都有一条出边和一条入边 我认为实现此目的的一种方法是将所有顶点放入一个罐中 并让顶点轮流洗牌并拉出条目 例如 如果顶点 1 拉出顶点 3 则意味着将有一条从 1 到 3 的边 如果一
  • Android Activity启动模式和深层链接问题

    我的应用程序有 2 个活动 应用程序的根 Activity 是 MainActivity 如果凭据丢失或无效 用户将在完成 MainActivity 时重定向到 LoginActivity 如果我将主活动的启动模式设置为 singleTas
  • MySQL 限制、组和 AVG 查询

    这里有一个谜题给你 我将集群计算的统计数据保存在名为 jobs 的 MySQL 表中 每个作业行都有一个执行作业的主机 不是唯一的 以秒为单位的作业执行时间以及作为 PK 的唯一整数 因此我可以简单地通过订购 PK 来订购已完成的作业 截至