DISTINCT 包含两个 array_agg (或一个包含元组的 array_agg)?

2024-01-04

我有以下查询:

SELECT DISTINCT ON (ps.p)
  m.groundtruth, ps.p, ARRAY_AGG(m.anchor_id), ARRAY_AGG(m.id)
FROM
  measurement m
JOIN
  (SELECT unnest(point_array) AS p) AS ps
  ON ST_DWithin(ps.p, m.groundtruth, distance)
GROUP BY ps.p, m.groundtruth
ORDER BY ps.p, RANDOM()

输出看起来像这样:

groundtruth | p           | anchor_array | id_array
------------------------------------------------------
G1          | P1          | {1,3,3,3,4}  | {1,2,3,4,5}
G2          | P1          | {1,5,7}      | {6,7,8}
G1          | P2          | {1,3,3,3,4}  | {1,2,3,4,5}

替代查询:

SELECT DISTINCT ON (ps.p)
  m.groundtruth, ps.p, ARRAY_AGG(row(m.anchor_id, m.id))
...

Output:

groundtruth | p           | combined_array
-----------------------------------------------------------
G1          | P1          | {(1,1),(3,2),(3,3),(3,4),(4,5)}
G2          | P1          | {(1,6),(5,7),(7,8)}
G1          | P2          | {(1,1),(3,2),(3,3),(3,4),(4,5)}

我想要实现的目标:

  • 删除anchor_array中的重复条目
  • 对于每个删除的项目:从 id_array 中删除具有相同索引的项目

或者对于替代查询和输出:

  • 使每个元组不同关于元组的第一个条目

结果应该是什么样子:

groundtruth | p           | anchor_array | id_array
------------------------------------------------------
G1          | P1          | {1,3,4}      | {1,2,5}
G2          | P1          | {1,5,7}      | {6,7,8}
G1          | P2          | {1,3,4}      | {1,2,5}

或者对于替代查询和输出:

groundtruth | p           | combined_array
-----------------------------------------------------------
G1          | P1          | {(1,1),(3,2),(4,5)}
G2          | P1          | {(1,6),(5,7),(7,8)}
G1          | P2          | {(1,1),(3,2),(4,5)}

附:为了更好地概述,我忽略了示例输出中的随机化部分。


真实结果集:

p                                           ; groundtruth                                ; ids
---------------------------------------------------------------------------------------------
"0101000000EE7C3F355EF24F4019390B7BDA011940";"010100000094F6065F98E44F40A930B610E4A01B40";"{"(29,250)","(30,251)","(31,241)","(32,263)","(33,243)","(34,264)","(35,277)"}"
"0101000000EE7C3F355EF24F40809F71E140681940";"010100000094F6065F98E44F40A930B610E4A01B40";"{"(29,250)","(30,251)","(31,257)","(32,276)","(33,272)","(34,264)","(35,249)"}"
"0101000000EE7C3F355EF24F40E605D847A7CE1940";"0101000000EE7C3F355EF24F4019390B7BDA011940";"{"(30,194)","(31,181)","(32,168)","(33,124)","(34,141)","(35,4)"}"
"0101000000EE7C3F355EF24F404C6C3EAE0D351A40";"010100000014D044D8F0DC4F4073BA2C2636DF1C40";"{"(30,281)","(31,278)","(32,297)","(33,284)","(34,294)","(35,303)"}"
"0101000000EE7C3F355EF24F40B3D2A414749B1A40";"0101000000DE9387855AEB4F4062670A9DD7581A40";"{"(30,235)","(31,214)","(32,220)","(33,221)","(34,217)","(35,232)"}"
"0101000000EE7C3F355EF24F4019390B7BDA011B40";"0101000000AF94658863D54F40A7E8482EFF211E40";"{"(27,316)","(31,329)","(32,334)","(33,340)","(34,327)","(35,324)"}"
"0101000000EE7C3F355EF24F40809F71E140681B40";"0101000000DE9387855AEB4F4062670A9DD7581A40";"{"(30,224)","(31,210)","(32,220)","(33,230)","(34,226)","(35,213)"}"
"0101000000EE7C3F355EF24F40E605D847A7CE1B40";"010100000014D044D8F0DC4F4073BA2C2636DF1C40";"{"(30,281)","(31,304)","(32,288)","(33,293)","(34,306)","(35,295)"}"
"0101000000EE7C3F355EF24F404C6C3EAE0D351C40";"010100000094F6065F98E44F40A930B610E4A01B40";"{"(29,250)","(30,256)","(31,257)","(32,271)","(33,254)","(34,260)","(35,277)"}"
"0101000000EE7C3F355EF24F4019390B7BDA011D40";"010100000007F0164850C44F405F46B1DCD24A2040";"{"(31,383)","(32,409)","(33,390)","(34,411)","(35,407)"}"

类似于我在你的回答前面的问题 https://stackoverflow.com/a/15102921/939860, 只是与ARRAY of rows就像你建议的和更短的位置符号:

SELECT DISTINCT ON (1)
       p, groundtruth, array_agg(ROW(anchor_id, id)) AS ids
FROM (
   SELECT DISTINCT ON (1, 2, 3)
          ps.p, m.groundtruth, m.anchor_id, m.id
   FROM  (SELECT unnest(point_array) AS p) AS ps
   JOIN   measurement m ON ST_DWithin(ps.p, m.groundtruth, distance)
   ORDER  BY 1, 2, 3, random()
   ) x
GROUP  BY 1, 2
ORDER  BY 1, random();

但我更喜欢带有二维数组的另一个版本。

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

DISTINCT 包含两个 array_agg (或一个包含元组的 array_agg)? 的相关文章

  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • 使用nodejs的sequelize更新多对多连接表

    我有一个产品表和一个类别表 一个产品可以有多个类别 一个类别可以有多个产品 因此我有一个 ProductsCategories 表来处理多对多连接 在下面的示例中 我尝试将我的一款产品 ID 为 1 与 3 个不同的类别 ID 为 1 2
  • “语言‘plpgsql’VOLATILE”是什么意思?

    当我在 Postgres 数据库中创建或更新函数或过程时 我看到LANGUAGE plpgsql VOLATILE在函数结束时 这意味着什么以及其目的是什么 From Postgres 文档 http www postgresql org
  • 如何连接以逗号分隔的命名范围的返回值

    我花了几个小时试图找出如何连接命名范围中的返回值 但结果是 运行时错误 32 类型不匹配 作为一个新手 我仍在与数组作斗争 所以也许我忽略了一些细节 谢谢你帮助我 示例 B1 苯 B2 柴油 B3 混合动力 gt E1 汽油 E2 柴油 E
  • jQuery 相当于 underscore.js 的 groupBy

    jQuery 中是否有一个内置函数可以执行相当于http underscorejs org groupBy http underscorejs org groupBy 有什么解决方法吗 Thanks 不 jQuery 不是为数据处理而设计的
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T
  • 在 ruby​​ 中获取多维数组的维度

    我刚刚开始学习红宝石 现在我需要计算出多维数组的维数 我查看了所有数组方法的 ruby docs 但找不到返回维度的方法 这是一个例子 For 1 2 3 4 5 6 维数应为 2 For 1 2 2 3 3 4 5 维度应为 3 简单的
  • $_POST 最大数组大小

    我有一个非常大的表单 有 gt 1000 个元素 它们已经嵌套在表单 html 结构中 foreach from result item item tr td td tr
  • 什么决定了可变类上的 bang 方法是否返回“nil”?

    通常 可变类上的 bang 方法 例如String Array or Hash return nil当没有进行任何修改时 但一些Array爆炸方法 即collect map reverse rotate shuffle sort sort
  • 将一个大的 postgres 表拆分为多个 csv

    我正在使用以下 psql 查询连接到远程主机并将一个大表拆分为多个 csv 文件 psql h xx p xx U xx d xx c COPY select from table TO program split lines 1000 f
  • Excel VBA - 将一行单元格值传递到数组,然后将该数组粘贴到单元格的相对引用

    使用 Excel 2010 VBA 我尝试将恒定范围的单元格 其值重新计算 复制 传递 到数组 然后我尝试将该数组传递到其正下方的新单元格范围 完成此操作后 我想再次将常量范围的新值复制 传递 到数组 并将这些新值传递到我之前传递的值正下方
  • 在 Sql Server 中启用 DTD 支持

    我有各种 xml 文档需要存储在数据库列中 这些文档包含对 DTD 的引用 并且 SQL Server 不会导入 xml 因为它存在安全风险 如何在数据库上启用 DTD 支持 以便它可以让我插入 xml 内容 你必须CONVERT首先 MS
  • React 重新渲染数组,而 item key 没有改变

    列表的非常基本的代码示例 class List extends React Component render const listComponent this props numbers map number gt
  • PLSQL 中的时区转换

    我需要将系统日期和时间转换为特定时区 例如东部时间 我无法假设我当前的时区 如何在plsql中转换它 请帮我 假设你有一个TIMESTAMP WITH TIME ZONE 例如systimestamp 您可以使用AT TIME ZONE句法
  • numpy 数组最快的保存和加载选项

    我有一个生成二维的脚本numpy数组与dtype float和形状的顺序 1e3 1e6 现在我正在使用np save and np load对数组执行 IO 操作 然而 这些函数对于每个数组都需要几秒钟的时间 是否有更快的方法来保存和加载
  • 优化构建中通用函数的 Core Data Swift 转换失败

    我们有一个具有相当广泛的核心数据模型的应用程序 其中有许多用 Objective C 实现的自定义子类 但越来越多的用 Swift 编写的应用程序也使用这些子类 值得一提的是 我们使用 Xcode 7 3 1 针对 iOS 9 3 进行构建
  • R 中的约束优化

    我正在尝试使用http rss acs unt edu Rdoc library stats html constrOptim html http rss acs unt edu Rdoc library stats html constr
  • PostgreSQL:循环直到条件为真

    我正在尝试编写一个查询 该查询从指定值开始 循环 数据库 直到条件为真 例如 假设我在 TABLE 示例中有以下条目 id parent cond 1 True 2 1 False 3 1 False 4 2 False 我想要一个以 4

随机推荐

  • 查找文件占用了哪些硬盘扇区

    我正在寻找一种简单的方法来查找哪些扇区占用了给定的文件 我的语言偏好是 C 从我的 A Level 计算课程中 我了解到硬盘驱动器在磁盘的前几 KB 上有一个查找表 在此表中 每个文件都有一个链接列表 详细说明该文件占用的扇区 因此 我希望
  • 尝试将脚本作为函数执行

    我想在 MATLAB 中绘制此图 x 2 0 01 4 y 3 5 0 5 x cos 6 x plot x y 但它给出了这样的错误 尝试将 SCRIPT 图作为函数执行 C Users User Downloads Private 新建
  • 无法从 NuGet 包存储库检索版本控制信息

    在 Visual Studio Code Mac 中 Nuget Package 扩展不起作用 我想知道是否有办法修改 获取包 url api Mac VSCode 对于 Windows 路径类似于C Users user vscode e
  • 需要反应选择下拉菜单

    我是新来的反应 我正在尝试使用下面的库来使用下拉菜单 当我添加 required 属性时 它不会使用表单标记对其进行验证 https www npmjs com package react select https www npmjs co
  • 每分钟重复一次可观察的最好方法 rxjava

    我有以下方法 public class ParentalControlInteractor public Single
  • 为什么我的控制台日志中总是出现空值?

    在 JS 中 我正在创建一个输入元素 该元素将嵌套在 html 上 id 为 scripts 的 div 内 我通过 JS 将一个值附加到该输入字段 然后我想在另一个 JS 函数中捕获输入的值 问题是 当我在检查元素中运行页面时 我可以看到
  • zeus rspec 无法包含所需的文件,但单独使用 rspec 就可以了

    这是一个奇怪的问题 zeus 开始运行顺利 rspec spec 的工作完美无缺 My spec helper config is encoding UTF 8 require rubygems This file is copied to
  • 显示 git log 中的所有存储

    我想查看所有藏品git log输出 有谁知道是否有办法做到这一点 编辑 我想查看日志中的所有提交 包括存储提交 我尝试了命令 git log date order all 但它只返回最上面的藏匿处 我也希望看到代表其他存储的提交 你可以显示
  • R中如何判断一个变量是因子还是连续变量

    我有一个包含一堆变量的表 我可以使用什么语句来确定这些变量是被视为因子还是连续变量 假设foo是你的对象的名称 它是一个数据框 f lt sapply foo is factor 将应用is factor 数据框的每个组件 列 的函数 is
  • javascript中基于AND OR逻辑分割字符串

    我的问题是分割一个包含逻辑运算的字符串 例如 这是我的示例字符串 var rule device2 temperature gt 20 device2 humidity gt 68 device3 temperature gt 10 我需要
  • TypeScript 中这些类型断言或转换方法有什么区别

    我对 TypeScript 还很陌生 你能解释一下这些类型断言方法之间的区别吗 1 Using let myStr string 2 Using as let strLength myStr as string length 3 Using
  • 让selenium抓取所有cookie

    我被告知要对我们的前端站点进行 cookie 审核 现在我们拥有很多域名 所以我真的不会手动挖掘每个站点来提取 cookie 我决定选择硒 这一直有效 直到我想获取第三方cookie 目前 python 我可以做 driver get co
  • primefaces 日历:日期输入错误

    使用jsf 2 2 0 对于所有的日期 似乎都删除了一天 当我单击 11 月 8 日时 它显示 11 08 2011 但随后它将 2011 年 11 月 7 日存储在我的托管 bean 的 日期 字段中 我住在新加坡 想知道是否是时区问题
  • wso2 esb - XML 到 JSON 转换的问题

    我正在使用 WSO2 ESB 4 8 0 并且在将 xml 从 xslt 输出 转换为 json 时遇到以下问题 带有数字的字符串会自动转换为整数元素 orderId 10000 我希望它是字符串 orderId 10000 如果存在一个元
  • 如何上传自定义字体并在 Angular 6 中动态使用它

    我正在 Angular 6 项目中工作 我需要提供用户上传字体的功能并使用它 我也尝试过下面的代码 var junction font new FontFace example font family url https fonts gst
  • haskell中的attoparsec或parsec

    我必须解析一些文件并将它们转换为一些预定义的数据类型 Haskell 似乎为此提供了两个包 阿托秒差距 http hackage haskell org package attoparsec parsec http hackage hask
  • 有没有办法在 Emacs 中自动关闭文件名完成缓冲区?

    例如 当您通过 C x C f 打开文件时 您可以 TAB 补全文件名 如果有多个可能的补全 它将弹出一个补全缓冲区 其中包含可能的补全列表 问题是 打开文件后 缓冲区所在的窗口会切换回正常状态 但不会关闭 有什么办法可以让这些缓冲区在文件
  • 如何限制DownloadString(url)允许的时间为500毫秒?

    我正在编写一个程序 当 textBox1 更改时 URL http example com something URL System Web HttpUtility UrlEncode textBox1 Text s new System
  • 使用 PHP 填写 PDF 表单 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • DISTINCT 包含两个 array_agg (或一个包含元组的 array_agg)?

    我有以下查询 SELECT DISTINCT ON ps p m groundtruth ps p ARRAY AGG m anchor id ARRAY AGG m id FROM measurement m JOIN SELECT un