从 JSON 列计算平均值

2023-12-21

我有一个表,其中包含一列 JSON 数据,我想从中提取信息。具体来说,我只想得到平均值。

我所拥有的示例:

id      speed_data
391982  [{"speed":1.3,"speed":1.3,"speed":1.4,"speed":1.5...
391983  [{"speed":0.9,"speed":0.8,"speed":0.8,"speed":1.0...

我想要的示例:

id      speed_data
391982  1.375
391982  0.875

关于如何让这个查询工作有什么建议吗?

select t.*, avg(x.speed)
from tbl t,
    json_array_elements(a->'speed') x
order by random()
limit 1

你的 json 数组搞乱了,就像@posz 评论了 https://stackoverflow.com/questions/27368219/calculate-average-from-json-column#comment43201338_27368219。必须是:

CREATE TABLE tbl (id int, speed_data json);

INSERT INTO tbl VALUES
  (391982, '{"speed":[1.3,1.3,1.4,1.5]}')
, (391983, '{"speed":[0.9,0.8,0.8,1.0]}');

您的查询也以多种方式扭曲。在 pg 中会像这样工作9.3:

SELECT t.id, avg(x::text::numeric) AS avg_speed
FROM   tbl t
     , json_array_elements(speed_data->'speed') x
GROUP  BY t.id;

SQL 小提琴。 http://sqlfiddle.com/#!15/723de/9

在即将到来的PG中9.4我们可以用新的来简化json_array_elements_text()(在演员表中也不太容易出错):

SELECT t.id, avg(x::numeric) AS avg_speed
FROM   tbl t
     , json_array_elements_text(speed_data->'speed') x
GROUP  BY t.id;

更多细节:

  • 如何将json数组转为postgres数组? https://dba.stackexchange.com/a/54289/3684

旁白:将其存储为普通数组会更有效(numeric[], not json)或以规范化模式开始。

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

从 JSON 列计算平均值 的相关文章

  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • “语言‘plpgsql’VOLATILE”是什么意思?

    当我在 Postgres 数据库中创建或更新函数或过程时 我看到LANGUAGE plpgsql VOLATILE在函数结束时 这意味着什么以及其目的是什么 From Postgres 文档 http www postgresql org
  • 无法从 JQuery ajax 调用接收 JSON

    我已经确定来自服务器的 JSON 是有效的 手动进行 ajax 调用 但我真的很想使用 JQuery 我还使用 firebug 确定发送到服务器的 post URL 是正确的 但是 错误回调仍然被触发 解析错误 我还尝试了数据类型 文本 我
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已
  • 使用 lift-json 反序列化具有 Map[String,Any] 属性的案例类

    几天来我一直在努力解决一些通过 lift json 应该很简单的事情 将映射序列化为 JSON 我知道 我知道 根对象还不能是 List 或 Map 但我愿意暂时包装在一个案例类中 但我仍然无法让它工作 感谢一些堆栈溢出帮助 我已经可以进行
  • PHP,JSON 解码中的无效字符

    我在让 json decode 处理我收到的特定字符串时遇到问题 我已将其范围缩小到这一行 systemNotes 6 2013 年 1 月 9 日 12 52 PM 测试名称 帐单地址 2 已更改为送货姓名 送货姓氏 电子邮件地址 送货地
  • 在 SQL Server SELECT 语句中使用 CASE 时消除 NULL

    我有一份大而混乱的报告要写 它连接了 5 个表 一个表中有一列用于多个不同的值 本质上是一个 标签 列 其中标签根据用户想要使用的各种元数据的类型以创造性的方式使用 因此 我对报告的查询返回 3 个几乎相同的行 仅 标签 列有所不同 例如
  • 如何使用 Jackson 将对象附加到现有 JSON 文件

    如何使用 Jackson 将对象附加到现有 JSON 文件 File file new File test json if file exists file createNewFile ObjectMapper mapper new Obj
  • 使用 LIMIT/OFFSET 运行查询并获取总行数

    出于分页目的 我需要使用以下命令运行查询LIMIT and OFFSET条款 但我还需要计算该查询将返回的行数 而不需要LIMIT and OFFSET条款 我想运行 SELECT FROM table WHERE whatever ORD
  • sed 替换 json 对象中键的值

    我想做什么 给定一个 json 事件文件 我想通过关键字定位特定事件 然后将该事件中的键值替换为 这必须使用 sed 来完成 Splunk 转发问题 我不会用细节来烦你 事件示例 message we have a response fro
  • MySQL:为什么 IN 子句中的第 5 个 ID 会极大地改变查询计划?

    给出以下两个查询 Query 1 SELECT log id FROM log WHERE user id IN 188858 188886 189854 203623 204072 and type in 14 15 17 ORDER B
  • Rails 可以自动解析从表单 text_field 收到的日期时间吗

    Rails 可以自动解析从表单的文本字段接收到的日期时间吗 in view div class field br div in controller params product updated at yesterday 目前我收到以下错误
  • PHP json_encode 反斜杠和数组名称的问题

    我正在将一些 postgresql 数据转换为 PHP json encode 但我遇到了一些问题 json encode 将 BackSlash 添加到我的数据中的所有斜杠中 在描述中出现段落标记的结束 我认为是因为反斜杠问题 我不希望我
  • 如何从函数返回更新的行

    我对 postgres 很陌生 我想创建一个函数 如存储过程 来更新多行并选择受影响的行 这是我的声明 CREATE or replace FUNCTION set val val character varying 100 5 RETUR
  • Psycopg / Postgres:连接随机挂出

    我正在使用 psycopg2 作为我当前正在开发的cherrypy 应用程序 并使用 cli 和 phpgadmin 来手动处理一些操作 这是Python代码 One connection per thread cherrypy threa
  • Cython:为什么 size_t 比 int 快?

    更改某些 Cython 变量的类型int输入size t可以显着减少某些功能的时间 30 但我不明白为什么 例如 cimport numpy as cnp import numpy as np def sum int cnp int64 t
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • 如何对 JSON 对象进行加密哈希?

    下面的问题比乍看起来更复杂 假设我有一个任意 JSON 对象 该对象可能包含任意数量的数据 包括其他嵌套的 JSON 对象 我想要的是 JSON 数据的加密哈希 摘要 而不考虑实际的 JSON 格式本身 例如 忽略换行符和 JSON 令牌之
  • 如何限制mySQL中的搜索和替换字符串

    我用它来搜索和替换 mySQL 中的字符串 UPDATE products SET prodname REPLACE prodname S S 这些产品包含诸如 TYLENOL TABS 100 S 之类的字符串 我想将其转换为 TYLEN

随机推荐