Postgres:将列聚合到数组中

2024-04-30

我有以下两个表:

# select * from list;
  list_id |         name
 ---------+----------------------
        9 | Popular
       11 | Recommended

and

# select * from list_item;
 list_id | game_id | position 
---------+---------+----------
      11 |       2 |        0
       9 |      10 |        1
      11 |       5 |        1
      11 |       4 |        4
      11 |       6 |        2
      11 |       7 |        3
       9 |       3 |        0

我想要每个列表都有一组游戏 ID,如下所示:

 list_id |     name    | game_ids
---------+-------------+------------
       9 | Popular     | {3,10}
      11 | Recommended | {2,5,6,7,4}

我想出了以下解决方案,但它似乎相当复杂,尤其是我使用以下方法获得完整数组的部分distinct on and last_value:

with w as (
  select
    list_id,
    name,
    array_agg(game_id) over (partition by list_id order by position)
  from list
  join list_item
  using (list_id)
)
select
  distinct on (list_id)
  list_id,
  name,
  last_value(array_agg) over (partition by list_id)
from w

有什么建议如何简化这个吗?


这是 Abelisto 在评论中建议的更好的解决方案:

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

Postgres:将列聚合到数组中 的相关文章

随机推荐

  • Postgres触发器函数更新另一个表中的聚合结果

    我有两张桌子 表 x 和表 y 表 x 每天都会更新 我希望在表 x 中插入新数据后立即更新表 y 表 y 包含表 x 中每天所有更新的聚合值 Date为Date类型 其余两列为real类型 Table x 可以每天更新 table y 应
  • 当url中有空格时htaccess重定向

    我想从仍然出现在谷歌搜索中的旧网址重定向到新网址 旧的网址是这样的 http www marionettecolla org file 20 mostra milano mostra marionette milano htm 我想将其重定
  • 每天在 R 数据帧上应用 cut()

    我在 R 中有一个数据表 我在其中应用了cut and table 我能够根据条件得到频率表 但我得到了总体频率 我想明智地做到这一点 我有一个名为timestamp其中有时间戳 我还有一个section具有价值的列A or B 如何根据每
  • C# 文本文件 - 如何写入 EOF 字符

    这一定是一个简单的问题 但我没有找到任何东西 我有一个文本文件 我需要在末尾放置一个 EOF 字符 以便第三方供应商可以正确读取文件 写入文件结尾字符所需的转义字符是什么 我不确定是否需要提供更多信息 但如果需要 请告诉我 Thanks 如
  • iOS PhoneGap 调试工作流程

    如何在 Xcode 中调试 javascript 我可以做的一件事是在 OS X Chrome 浏览器中打开页面 但这自然不适用于涉及本机代码的应用程序流 我是否缺少一个聪明的 Xcode 技巧 随着 iOS 6 的发布 Apple 与 M
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 用于 Cast 对话框的 Android MediaMetaData 图像

    注意到演员对话框中有一些奇怪的东西 使用 MediaInfo Builder 为调用 RemoteMediaClient load mediainfo 准备 MediaInfo 如果这次 MediaMetaData addImage 使用与
  • gcc 预编译头使用 -c 选项时出现奇怪的行为

    短篇故事 我无法使用 gcc c 选项使预编译头正常工作 很长的故事 各位 我在 Linux 上使用 gcc 4 4 1 在一个非常大的项目中尝试预编译头之前 我决定在简单的程序上测试它们 他们 有点工作 但我对结果不满意 我确信我的设置有
  • 是否可以根据 Accept 标头的媒体类型在 .NET MVC 中选择具有 AttributeRouting 的操作?

    我想根据 Accept 标头中请求的媒体类型选择控制器的操作 例如 我有一个称为主题的资源 其指定路线为 GET subjects subjectId int 一般情况下 浏览器会请求text html 这很好 默认的媒体格式化程序可以很好
  • 隐藏在 C++ 类中嵌入 char 数组中的数据成员的性能、安全性和对齐方式是什么?

    我最近看到一个代码库 我担心它违反了对齐约束 我已经对其进行了擦洗 以生成一个最小的示例 如下所示 简而言之 球员们是 Pool 对于 高效 的某些定义 这是一个有效分配内存的类 Pool保证返回一块与请求大小对齐的内存块 Obj list
  • fortran中双引号和单引号的区别?

    我刚刚开始使用 Fortran 对双引号和单引号的使用感到困惑 它们是等价的 它们的用法没有区别 您可以使用它来打印引号字符之一 print print 首先打印 进而 注意 您还可以在一行中使用两个引号字符来打印一个 print prin
  • 当模态覆盖覆盖背景项目时,防止背景项目接收焦点?

    我正在努力使叠加模式更易于访问 它的工作原理本质上就像这个 JSFiddle https jsfiddle net 0dzcs30n 8 当您打开模式时 焦点无法正确进入模式 并且它继续关注页面中的其他 隐藏 背景 项目 你可以在我的 JS
  • 关于最令人烦恼的解析的令人困惑的细节

    我的问题是如何将以下行解析为函数声明 vector
  • 为什么到处都有冻结常数?

    我们可以很容易地从许多著名的存储库中找到这种样式 例如机架 导轨等 例如在机架中 https github com rack rack blob 28e77c710ac2ddb35c436d78d72e28f28f964446 lib ra
  • JTable 不会在 JScrollPane 中滚动

    我在尝试让表格滚动时遇到了麻烦 它就是不会 我查看了其他堆栈答案并尝试了它们 但它们不起作用 我不确定我是否与这些解决方案有冲突 tableModel new TableModel Custom Table Model table new
  • 在发出拉取请求之前我应该​​使用 dev 分支进行变基吗?

    我们当前的工作流程 从 dev 创建一个功能分支 开发功能并推送分支后 执行以下操作 git checkout dev git pull rebase 开发中 git checkout my feature branch git rebas
  • 尝试捕获默认 iSight 相机时 OpenCV 崩溃

    我正在尝试让 openCV 在我的 Macbook Pro 10 8 5 视网膜型号 上运行 并且我想使用默认的 iSight 摄像头进行输入 因为如果我不这样做 我不想随身携带或购买 USB 摄像头不需要 我正在使用 OpenCV 用户文
  • python 可以从 C 头文件加载定义吗?

    我正在围绕 C API 编写一个 python 包装器 我有一个广泛的 API 描述 现在我正在努力实现头文件中定义的枚举 假设我里面有一个 C API 函数myAPI dll 它接受枚举作为参数 例如 void SomeFunction
  • 使用基数 R 进行分组

    Dataset 我有一个数据集 其中包含年份 季度 渠道 销售额 单位 df lt structure list year c 2013L 2013L 2013L 2013L 2013L 2013L 2013L 2013L 2013L 20
  • Postgres:将列聚合到数组中

    我有以下两个表 select from list list id name 9 Popular 11 Recommended and select from list item list id game id position 11 2 0