将日期和整数合并到 ARRAY 中

2024-02-04

如何选择array_agg(ARRAY[f1_date,ARRAY[f2_int,f3_decimal]])?合并时出现错误date and integer在数组中。

upd:添加了图片解释我计划在何处以及如何使用数组。问题是数据库大小。将 3 列转换为多维数组后,我可以节省大量空间。它将是 4M 行而不是 200M。每行都有一个数组,里面最多有 500 个元素。


Postgres 中的数组在所有维度上共享相同的基本元素。

匿名记录数组

您可以构建匿名记录数组(作为基本类型):

SELECT array_agg((i,d))
FROM  (
   VALUES
     (1::int, 2.3::decimal)
    ,(2, 3.4)
    ,(3, 4.5)
   ) x(i, d);

但这相当笨重,因为您无法按名称访问匿名记录的子字段(名称不存在!)。与众所周知的类型一起操作可能更实用..

复合类型作为基本类型

创建一个复合类型并将其用作数组的基类型。

CREATE TYPE int_dec AS (i int, d decimal);

SELECT '(1, 2.3)'::int_dec AS id_base
      ,'{"(1, 2.3)","(2, 3.4)","(3, 4.5)"}'::int_dec[] AS id_arr

-- Build an array from composite base type
SELECT array_agg(a)
FROM (
    VALUES
      ('(1, 2.3)'::int_dec)
     ,('(2, 3.4)'::int_dec)
     ,('(3, 4.5)'::int_dec)
    ) x(a);

-- Build an array from composite base type
SELECT array_agg((i,d)) AS anonymous_arr
      ,array_agg((i,d)::int_dec) AS id_arr
FROM  (
   VALUES
     (1::int, 2.3::decimal)
    ,(2, 3.4)
    ,(3, 4.5)
   ) x(i, d);

表作为基本类型

Any table可以作为复合类型。

db=# CREATE TEMP TABLE int_dec (i int, d decimal);
CREATE TABLE
db=# INSERT INTO int_dec VALUES (1, 2.3), (2, 3.4), (3, 4.5);
INSERT 0 3
db=# SELECT array_agg(id) FROM int_dec id;
            array_agg
---------------------------------
 {"(1,2.3)","(2,3.4)","(3,4.5)"}

Text作为共同点

另一种方法是将所有值转换为text since every数据类型可以转换为text返回 PostgreSQL 并构建一个multi-dimensional array.

为此,您可能有兴趣聚合多维的数组。考虑这个相关问题下的答案:
选择数据到 Postgres 数组中 https://stackoverflow.com/questions/11762398/selecting-data-into-a-postgres-array-format

不过,根据我的经验,通常有比构建复杂数组更好的解决方案。

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

将日期和整数合并到 ARRAY 中 的相关文章

  • 如何在 Swift 中按换行符分割字符串

    我有一个从文本文件中获得的字符串 文本文件 Line 1 Line 2 Line 3 我想将其转换为数组 每行一个数组元素 Line 1 Line 2 Line 3 根据文件的保存方式 字符串可能采用以下形式之一 string Line 1
  • 下面的 C 程序的输出是什么? [复制]

    这个问题在这里已经有答案了 char getString char str Will I be printed return str int main printf s getString getchar 输出不应该是 我会被打印吗 相反
  • 在 REDIS+RABBITMQ+Celery 中访问 Postgres DB 会使用“信号 11 (SIGSEGV) 终止 Python 任务”

    当我们运行 SQL 命令时 例如 video Video objects get pk 1 在Python视图中 它工作没有任何问题 然而 如果在定义为 celery 的方法中启动 shared task 它死了并杀死了PythonERRO
  • 如何在 Visual C# 中清除数组

    我有一个整数数组 它们从 0 开始 然后填充一些值 然后我想将所有值设置回 0 以便我可以再次使用它 或者删除整个数组 以便我可以重新声明它并从全 0 的数组开始 您可以致电数组 清除 http msdn microsoft com en
  • 将字符串数组转换为字节数组

    好吧 在有人试图将其标记为重复之前 我是not要求将字符串转换为字节数组 我想要一个字符串数组 包含类似这样的内容 5 168 188 28 29 155 转换为字节数组 我已经搜索过 只能找到字符串到字节数组 这是完全不同的 谢谢 编辑
  • rspec 返回“PG::Error: ERROR: 关系“table_name”不存在”

    rvm rspec 2 8 0 rails 3 0 6 和 pg 0 13 2 上的环境为 REE 2011 12 在 CentOS 5 6 上使用 PostgreSQL 8 3 17 db migrate 可以正常工作 但 rspec 出
  • 当 SQL 包含变量时在 pgAdmin 中调试 SQL

    在 SQL Server 中 我可以从应用程序中复制 sql 代码并将其粘贴到 SSMS 中 声明并分配 sql 中存在的变量并运行 是的 很棒的调试场景 例如 请注意 我很生疏 语法可能不正确 declare x as varchar 1
  • 如何在 Perl 中生成数组的所有排列?

    生成所有内容的最佳 优雅 简单 高效 方式是什么 n perl 中数组的排列 例如 如果我有一个数组 arr 0 1 2 我想输出所有排列 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 它可能应该是一个返回迭代器的
  • JavaScript 中多个数组的笛卡尔积

    如何在 JavaScript 中实现多个数组的笛卡尔积 举个例子 cartesian 1 2 10 20 100 200 300 应该返回 1 10 100 1 10 200 1 10 300 2 10 100 2 10 200 2020
  • 如何在Java中扩展数组而不更改其名称

    我想知道是否可以在 Java 中扩展数组而不更改其名称 因为我有多个方法链接到该数组 我正在考虑创建一个同名但两倍大的新数组 然后将第一个数组中的所有元素复制到第二个数组 这可能吗 基本上我想创建一个包含银行账户的数组 如果客户创建了太多账
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • 使用 START WITH 和 CONNECT BY PRIOR 将查询从 oracle 迁移到 postgresql

    我正在将一个进程从 oracle 迁移到 postgresql 并且在它们的转换方面遇到了另一个问题 我一直在研究如何迁移oracle查询 它有 START WITH 和 CONNECT BY PRIOR 我已经对此进行了记录 我认为最简单
  • 如何让 Numpy 将每一行/张量视为一个值

    许多功能 例如in1d https docs scipy org doc numpy 1 13 0 reference generated numpy in1d html and setdiff1d https docs scipy org
  • 循环结束后从头开始重新迭代 for 循环 - JS

    我有一个数组和一个对象数组 我基本上需要将数组的第一个元素映射到数组内对象的第一个元素 依此类推 两个数组的长度都可以是可变的 并且一旦循环结束 循环应该从头开始 但是 我不确定是否再次开始循环 这是我的代码 const colors 7c
  • 如何在聚合框架中按位置修改数组中的值

    假设有一个简单的文档 array a b c d 如何修改second值在聚合 With update这很简单 db collection updateOne set array 1 B gives array a B c d 在聚合框架中
  • PostgreSQL、Npgsql 返回 42601:“$1”处或附近的语法错误

    我正在尝试使用 Npgsql 和 或 Dapper 来查询表 但我不断遇到Npgsql PostgresException 42601 syntax error at or near 1 这是我用 NpgsqlCommand 尝试的结果 u
  • 如何通过键查找最大和最小日期

    我有一个数组 a array 2010 05 03 gt 100 2010 05 04 gt 400 2008 05 01 gt 800 2011 01 01 gt 800 我如何找到最大值和最小值key date 例如 max gt 20
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 使用 Sequelize.js 和 PostgreSQL 查询关联模型上的 JSONB 字段

    我有我的两个模型Foo and Bar Foo有一个字段barId 因此有一个Bar与其关联的对象 我可以查询我所有的Foo对象并包括它们的关联Bar对象如此 我正在使用 TypeScript续集打字稿 https github com R
  • Postgresql 创建扩展失败

    我正在使用扩展 到目前为止没有任何问题 现在我创建一个新的 当我打电话时 创建扩展实用程序 我进入 PG 9 2 创建扩展实用程序 FEHLER Syntaxfehler bei ZEILE 1 创建扩展实用程序 在 PG 9 1 中 创建

随机推荐

  • 在 docker-entrypoint-initdb.d 中创建 pg_cron 扩展失败

    如果我创建pg cron https github com citusdata pg cron扩展在一个docker entrypoint initdb d init sql文件 docker镜像无法运行并且docker logs
  • 在 Android 应用程序中使用 Stripe 秘密 api 密钥是否安全?

    我在这里看到一些人建议这样做是可以的 这看起来容易得多 但是有人不能反编译您的应用程序并泄露您的密钥吗 提前致谢 您绝对不应该将密钥放入移动应用程序中 正如您所怀疑的 找回您的钥匙会很容易 一旦攻击者获得了您的密钥 他们基本上就可以对您的帐
  • 使用 HttpURLConnection 上传多个图像文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想使用 HttpURLConnection 上传多个图像文件 并且图像的数量不固定为从 android 上传多少个文件 请不要发送
  • 如何将 fread() 与“https”url 方案一起使用?

    在 fread 的 R 文档中 输入 参数可能是以 http 或 file 开头的 URL 然而在这个 数据表简介 https rawgit com wiki Rdatatable data table vignettes datatabl
  • 分号作为 URL 查询分隔符

    虽然强烈推荐 W3C 源代码 http www w3 org TR 1999 REC html401 19991224 appendix notes html h B 2 2 via 维基百科 http en wikipedia org w
  • Spring Tool Suite 更改键绑定自动完成

    How do I change the keybinding for code autocompletion Ctrl Space is just horrible I would like to have Alt Space But un
  • 项目文件夹已存在且不为空 - netbeans 中出现错误

    我正在使用 NetBeans 7 0 1 当我尝试创建 JAVA 应用程序时 出现错误 项目文件夹已存在且不为空 但事实是项目文件夹不存在 它们的目录中没有同名文件夹 任何建议都会有很大的帮助 提前致谢 当您尝试创建它时 问题是否出现了 或
  • Solrcloud 删除集合错误?

    首先 我创建一个名为的集合用户集合 http xxxxx solr admin collections action CREATE name usercollection numShards 3 replicationFactor 3 ma
  • docker-compose内部DNS服务器127.0.0.11连接被拒绝

    突然 当我使用 docker compose 部署一些新容器时 内部主机名解析不起作用 当我尝试使用 docker compose yaml 文件中的服务名称从另一个容器 ping 一个容器时 我得到了ping bad address my
  • 错误简单示例 lucene 4.0 与源(不是 jar lib)

    编辑 我找到了解决方案 编辑core jar 删除除编解码器包之外的所有包并添加到构建路径 编解码器包必须在jar中 不能是源代码 我无法理解 这是 Lucene 的非常简单的代码 它与 Lucene core lib 一起运行 但是当我使
  • SKLearn KMeans 收敛警告[重复]

    这个问题在这里已经有答案了 我在一维数据集上使用 SKLearn 的 KMeans 聚类 我遇到的错误是 当我运行代码时 我得到一个ConvergenceWarning ConvergenceWarning Number of distin
  • Pinterest Api 限制返回的 pin 数量

    使用此请求获取 Pinterest Api 用户的 pin 来自pinterest API 文档 https stackoverflow com questions 9951045 pinterest api documentation h
  • 泛型,其中 T 是实现接口的类

    我有一个界面 interface IProfile 和一个类 Serializable class Profile IProfile private Profile private to ensure only xmlserializer
  • 查看用户最近执行的Android任务

    我想查看我的 Android 手机最近的任务 我尝试了一些来自互联网的代码 但没有一个能正常工作 我只想获取用户最后执行的应用程序的PID和名称 例如 如果我执行计算器应用程序 然后执行我创建的最近任务应用程序 则该应用程序应该能够告诉我类
  • 本地时间(以毫秒为单位)

    我怎样才能通过图书馆提升获得当前时间 我可以做这个 ptime now boost posix timesecond clock local time tm d tm to tm now 但最后一个时间单位tm结构是第二位 我需要以毫秒为单
  • 用于 Git 更新的 RSS 提要

    是否有我可以订阅的 RSS Atom 提要或 Git 更新邮件列表 我发现很难跟上最新版本 因为我无法知道新版本何时发布 对于 msysgit Windows 端口 它只是 Google Code 提供的 feed http code go
  • 可以停止由 VIsual Studio 2015 生成 *.ipdb *.iobj 文件吗?

    在 Visual Studio Community 2015 中 Visual C 项目在其 Release 文件夹中生成 ipdb 文件和 iobj 文件 现在在 Visual Studio Community 2013 中 我从未见过在
  • C++ 重载运算符 [ ][ ]

    我有 CMatrix 类 其中是指向值数组的 双指针 class CMatrix public int rows cols int arr 我只需要通过键入以下内容来访问矩阵的值 CMatrix x x 0 0 23 我知道如何使用以下方法
  • Django - 改变迁移中的基础

    由于某些原因 我想对我的模型进行重大更改 我想以某种方式重新设计我的整个设计 但 Django 迁移实现通过不更新我的模型库来记住以前的设计 让我快速展示一下我以前拥有的和现在拥有的 app1 TopLevel app1 Intermedi
  • 将日期和整数合并到 ARRAY 中

    如何选择array agg ARRAY f1 date ARRAY f2 int f3 decimal 合并时出现错误date and integer在数组中 upd 添加了图片解释我计划在何处以及如何使用数组 问题是数据库大小 将 3 列