如何使用 1 个 mySQL 查询返回所有结果的数值箱线图数据?

2024-02-20

[tbl_votes]
- id <!-- unique id of the vote) -->
- item_id <!-- vote belongs to item <id> -->
- vote <!-- number 1-10 -->

当然,我们可以通过以下方式解决这个问题:

  • the smallest observation (so)
  • the lower quartile (lq)
  • the median (me)
  • the upper quartile (uq)
  • and the largest observation (lo)

..一对一地使用多个查询,但我想知道是否可以通过单个查询来完成。

在Oracle中我可以使用COUNT OVER and RATIO_TO_REPORT,但这在 mySQL 中不受支持。

对于那些不知道箱线图是什么的人:http://en.wikipedia.org/wiki/Box_plot http://en.wikipedia.org/wiki/Box_plot

任何帮助,将不胜感激。


我在 PostgreSQL 中找到了使用 PL/Python 的解决方案。

不过,我保留这个问题,以防其他人在 mySQL 中提出解决方案。

CREATE TYPE boxplot_values AS (
  min       numeric,
  q1        numeric,
  median    numeric,
  q3        numeric,
  max       numeric
);

CREATE OR REPLACE FUNCTION _final_boxplot(strarr numeric[])
   RETURNS boxplot_values AS
$$
    x = strarr.replace("{","[").replace("}","]")
    a = eval(str(x))

    a.sort()
    i = len(a)
    return ( a[0], a[i/4], a[i/2], a[i*3/4], a[-1] )
$$
LANGUAGE 'plpythonu' IMMUTABLE;

CREATE AGGREGATE boxplot(numeric) (
  SFUNC=array_append,
  STYPE=numeric[],
  FINALFUNC=_final_boxplot,
  INITCOND='{}'
);

Example:

SELECT customer_id as cid, (boxplot(price)).*
FROM orders
GROUP BY customer_id;

   cid |   min   |   q1    | median  |   q3    |   max
-------+---------+---------+---------+---------+---------
  1001 | 7.40209 | 7.80031 |  7.9551 | 7.99059 | 7.99903
  1002 | 3.44229 | 4.38172 | 4.72498 | 5.25214 | 5.98736

Source: http://www.christian-rossow.de/articles/PostgreSQL_boxplot_median_quartiles_aggregate_function.php http://www.christian-rossow.de/articles/PostgreSQL_boxplot_median_quartiles_aggregate_function.php

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

如何使用 1 个 mySQL 查询返回所有结果的数值箱线图数据? 的相关文章

  • 如何在 MySQL Insert 语句中添加 where 子句?

    这不起作用 INSERT INTO users username password VALUES Jack 123 WHERE id 1 有什么想法如何通过 id 将插入范围缩小到特定行吗 在插入语句中 您不会有现有行来执行 where 语
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • WHERE 条件基于 PK 的查询是否建议使用“LIMIT 1”?

    我正在查询 mySQL 数据库以检索 1 个特定行的数据 我使用表主键作为 WHERE 约束参数 E g SELECT name FROM users WHERE userid 4 userid 列是表的主键 在 mySQL 语句末尾使用
  • MySQL Workbench 忽略外键

    在处理 MySQL Workbench 中的 SQL 编辑器时 我偶然发现了一些奇怪的事情 其中 执行似乎忽略了外键约束 这是一个例子 create database testdb use testdb create table t1 te
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • MySQL 跨表计数(*) 查询帮助

    SELECT name COUNT AS count FROM t1 t2 WHERE t2 id t1 id GROUP BY t2 id 我想从 t1 获取名称以及 t2 中 id 与 t1 相同的行数 到目前为止我已经得到了上面的内容
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • Python 的 mysqldb 晦涩文档

    Python 模块 mysqldb 中有许多转义函数 我不理解它们的文档 而且我努力查找它们也没有发现任何结果 gt gt gt print mysql escape doc escape obj dict escape any speci
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci
  • 在 MySQL 中执行触发器需要什么权限?

    我发现 MySQL 手册中对 DEFINER 的解释令人困惑 因此我不确定运行应用程序的 执行用户 需要什么权限 为了安全起见 我喜欢将 执行用户 限制为所需的最少权限 我知道触发器 存储过程的创建者需要超级权限 但是 执行用户 是否也需要
  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • 拉拉维尔; “SQLSTATE[HY000] [2002] 连接被拒绝”

    我在 OSX 主机上设置了 homestead 2 0 并使用 Sequel Pro 我可以进行迁移并确认数据已在Sequel Pro中迁移 因此看起来数据库连接没有问题 但是 一旦我尝试从 Laravel 4 2 应用程序获取数据 它就无
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 如何编写可以补偿拼写错误数据的 MySQL 搜索?

    有没有什么方法可以编写一个 MySQL 搜索来弥补用户在拼写等方面的错误 作为随机示例 有人可能会输入 电子邮件受保护 cdn cgi l email protection代替 电子邮件受保护 cdn cgi l email protect
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码

随机推荐

  • jquery 代码没有运行

    我想在单击后更改 div1 的颜色 当我点击时div1它必须将其背景颜色更改为 4A6B4C但这并没有发生 请帮忙 谢谢 document ready function div1 click function div1 toggleClas
  • 在 Eclipse 中显示日语字符时出现问题

    我的 Eclipse IDE 显示垃圾字符而不是正确的日语字符 尝试了很多策略 我的编码设置为UTF 8 但仍然没有结果 附上参考截图 任何帮助都会被接受 提前致谢 在您的工作区目录中打开此文件
  • Node js 中的 Values 文件上传器 - 多个文件上传

    我在用着值 ajax 文件上传器 http valums com ajax upload 我的nodejs服务器端如下所示 fileStream fs createWriteStream dirname public images hous
  • 为 Scala 枚举导出 Cats 顺序

    我想要一只普通的猫Order对于斯卡拉的Enumeration 我试过 implicit def enumOrder E lt Enumeration V lt E Value cats Order V new cats Order V d
  • 在discord.py中调用on_member_update时如何访问member?

    我正在尝试创建一个不和谐的机器人 一旦成员离线 不可见 该机器人就会为该成员添加特定的角色 这是我的代码 bot event async def on member update before after if str before sta
  • 如何防止用户关闭我的 C# 应用程序?

    如何用C 制作非封闭的应用程序 我想禁用表单的 X 按钮并防止 Windows 任务管理器关闭它 我知道防止表单关闭的一种方法是处理FormClosing事件 但如何防止任务管理器关闭它 不 无法阻止任务管理器关闭您的应用程序 任务管理器可
  • 在可可中处理来自 MIDIReadProc 的传入 MIDI 信号的最佳策略

    我必须移动一些NSSlider通过硬件MIDI控制器 我编写了一个MIDI学习程序来将硬件光标分配给NSSlider 的子类 上面就没有问题了 里面MIDIReadProc 我负责移动NSSlider这取决于传入的控制和值 但现在当我移动硬
  • 为了使其在共享主机上的中等信任下运行,需要避免在 ASP.NET 应用程序中进行编码的最常见、最典型的事情是什么?

    Medium Trust 阻止您做哪些事情 例如 我已经了解到 Medium Trust 会阻止您使用 System IO Path GetTempPath 还有哪些类似的事情 以下是如何了解和解决信任问题 1 在 Windows Micr
  • CLion 构建依赖目标

    我的 CLions CMakeLists txt 包含超过 1 个目标 库和依赖的可执行文件 如何配置一键构建所有目标 而不是一一选择目标并构建它们 例如 在 Visual Studio 中 我可以配置项目依赖项并构建所有解决方案 CLio
  • JQuery - 设置 TBODY

    我有一个表定义如下 table cellpadding 0 cellspacing 0 thead tr th Date th th First Name th th Last Name th tr thead tbody tbody ta
  • Webpack 2:无法解析模块

    我有一个这样的项目 root webpack config js app app js js dep js core module js 这是 webpack 配置文件 module exports entry app app js out
  • Nestjs 与 Plain Express 性能对比

    我刚刚测试了一个简单的 Nest 控制器的性能 该控制器在 get 请求上返回文本 无数据库 以及与 Express 相同的简单 GET 控制器 中间件 我使用WRK工具来测试性能 因此 plain express 的速度比 Nestjs
  • 如何修复 Microsoft Edge 中不显示的 Web 组件

    我正在尝试 lit element 在 Chrome 和 Firefox 等浏览器上一切都很顺利 但当我尝试 Microsoft Edge 和 IE11 时遇到了问题 在 Chrome 和 Firefox 中显示的 Web 组件在 Micr
  • 如何将犰狳矩阵转换为向量的向量?

    我创建了一个犰狳 C 矩阵 如下所示 arma mat A A zeros 3 4 我想将其转换为由定义的向量组成的向量 std vector lt std vector
  • 安装我的 nuget 包后执行操作

    我们创建了很多 NuGet 包 其中一个是一个工具 它包含一个特殊的编译器 它的安装就像一个dotnet tool 命令的名称是 PolyGen 我们使用了类似的机制Grpc Tools使用 这意味着我们已经在 NugetPackage 中
  • 让 vim 修改文件而不是移动新版本?

    我希望我的应用程序在保存文件时自动更新 因此 我使用inotify ubuntu 来创建检测事件的观察者 问题是vim覆盖文件而不是更新它 所以我的观察者在第一次更新后就丢失了 我想知道 有没有办法设置 vim 使其不使用交换文件并直接更新
  • 如何为asp.net web api编写集成测试

    我正忙着用 asp net web api 设计一个 web 服务 我想开始对每个控制器进行单元测试 到目前为止 这是我的测试课 TestClass public class MyDevicesControllerTest TestMeth
  • mpdf 忽略 javascript

    我在这里有一个问题 我已经使用缓冲来使用 mpdf 获取 pdf 文件 但我在这里有点困惑 我正在缓冲的页面上有一些 javascript 但是从 javascript 生成的内容没有转换为 pdf 让我说清楚 假设我有这个元素 div d
  • ios 访问主窗口或视图

    我想知道是否有一种简单的方法可以访问 IOS 中的主窗口或视图 类似于 UIScreen mainScreen 谢谢 Try UIWindow frontWindow UIApplication sharedApplication wind
  • 如何使用 1 个 mySQL 查询返回所有结果的数值箱线图数据?

    tbl votes id item id vote 当然 我们可以通过以下方式解决这个问题 the smallest observation so the lower quartile lq the median me the upper