问题标签 [array-agg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
95 浏览

apache-drill - Apache Drill 上的 array_agg 函数

我需要使用下面的array_agg函数。(它是postgresql)

但是,我在 Apache Drill 文档中找不到 array_agg 函数。

我需要制作array_agg的自定义功能吗?Apache Drill 是否有针对 array_agg 函数的计划?

0 投票
1 回答
174 浏览

sql - Exasol 中的数组聚合

用例相当简单。在 postgres 中,我可以将 a 中的值聚合GROUP BY到一个数组中:

在 Exasol 中,从聚合函数的文档页面中,我只能看到将上面的GROUP_CONCAT所有值合并items为逗号分隔的字符串。

是否可以在适当的数组而不是字符串中获取这些值?

0 投票
1 回答
134 浏览

php - 为一维和二维数组构建 SQL 输出

我正在开发一个需要一系列 SQL 相关输出的 PHP 程序,我希望 SQL 可以完成我的大部分工作。

为了这个问题,我有一个带有这种类型的数据和标题的表格

在此处输入图像描述

注意:ID 用于特定条目,并且是自动递增的
注意:标题部分用于隔离特定项目的数据
注意:对于特定项目,人员可能会重复
注意:日期不会重复,但不一定要组织
注意:对于这个问题的目的假设数据没有很好地组织并且在 SQL 语句中发生排序

当我使用 phpmyadmin sql 数据库时

在此处输入图像描述

这是我想要的正确输出。

问题来了,我想使用接近 array_agg 的东西,但是对制作数组数组(二维数组)感到困惑,但我想做的是在新表上使用 SQL 查询,这样我就可以生成以下数组.

问题:SQL 能否提供一个输出,允许我根据上述数据集拥有以下数组?

这听起来像是大量的工作,但如果 SQL 可以准确地给我这种输出,它将使我的一些编码变得更加容易。此时,我必须将 SQL 中的数据行输出到我的 PHP 中,并在 PHP 代码本身中构建数组,而不是让 SQL 输出这样的数组,对于较大的数据库,构建数组本身需要大量时间更不用说要求独特的数据了。

0 投票
0 回答
152 浏览

java - postgres中的array_agg函数,在java中使用时不返回任何记录/数据?

我有这样的查询

当我在pgAdmin中执行此查询时,它运行良好并返回像此 图像一样的记录 但是当从 java 代码调用时它不起作用

0 投票
4 回答
241 浏览

sql - 如何将array_agg之后的整数数组转换为IN子句的值

可以请帮助我,我正在尝试解决这个问题很长一段时间......我有表格产品和相关产品(顶级产品由其他基础产品组成)。目标:我想获得所有基础产品。所以,表看起来像:

我通过查询得到了这个:

我想related_product_ids输入产品表以获取所有相关产品。所以,实际上我通过运行从所有必要的值中创建了数组

我尝试了以下操作,但没有成功:

或以下:

和许多其他尝试

所以最后我需要的是

(来自 的值related_product_ids

如何将整数数组(related_product_ids)转换为值....或者您可以建议不同的更好方法?

DBFiddle

0 投票
1 回答
42 浏览

postgresql - Postgres 复杂查询以获取具有与具有特定值的另一个表连接的对应列的列值

我有两个 Postgres 表:

来自 affiliations 的 user_id 可以是关系中的两个列值中的任何一个,并且 current in affiliations 是一个布尔值。

在关系中,user_id 不是唯一的,可以有多个对应的 target_user_id 值。

我想从附属关系中获取一个 user_id 列表,这些列表也在关系中的 user_id 列中,并且它们所有相应的 target_user_id 值都将它们在附属关系中的“当前”值设置为 false

例子:

所以我希望查询只返回 1,因为用户 2 没有其所有对应的 target_user_id 其当前为 false

提前致谢!

0 投票
1 回答
51 浏览

postgresql - Postgres如何按1列分组并将其他列聚合为数组中的元素

数据库表如下所示:

我想按状态分组并city变成一个数组并contact用分号拆分以变成一个数组:

这将每个状态聚合contacts为 1 行,并且应该处理空值,但它不会被拆分为分号:

如何state在聚合每个状态的所有行city和行时修改我的查询以分组?contact

0 投票
1 回答
142 浏览

sql - 在 Big Query 中制作连接表数组的最佳方法是什么?

我正在尝试使用 SQL 在 Big Query 中进行一些数据转换。

假设我有三个表:

客户 - 有关客户的数据,例如年龄等 订阅 - 有关用户订阅的数据 参与度 - 有关客户如何与数字产品交互的数据。

我想使用嵌套字段将其收集在一个表中。

我可以加入所有这些表,但我想将它们聚合到数组中。

因此,我得到的不是三个表:

当然,我在 SELECT 中使用了 array_agg。当只添加一个表时,效果很好。但是,当添加另一个时,我会得到重复的行,这是我不想要的。所以,我想我不应该在 SELECT 中使用 array_agg,而应该在其他地方使用。

但是解决这个问题的最佳方法是什么?

0 投票
2 回答
152 浏览

sql - BigQuery:使用 GroupBy 选择前 3 天的销售并保存在单独的列中,留下其他列

输入: 有表'A'

场景: 必须取按商店、类别分组的销售额平均值并保存在单独的列中,并选择前 3 个销售日并保存在单独的列中。结果,一个商店一行,示例输出中的类别如下所示。

预期输出:

尝试查询:

提前致谢!

0 投票
2 回答
306 浏览

arrays - 如何在 PostgreSQL 选择语句中尊重数组的顺序

这是我的(极其简化的)产品表和一些测试数据。

在现实生活中,列出产品列是一项教学任务,充满了连接、case-when-end 子句等。另一方面,有大量的查询需要完成,如按品牌的产品、特色产品、产品按标题、按标签、按范围或价格等。

我不想在每次执行查询时重复和维护复杂的产品列列表,所以我目前的方法是在两个任务中打破查询过程:

  • 将查询封装在 type 的函数中select_products_by_xxx(),该函数返回product_id正确选择和排序的数组。
  • 将所有产品列的复杂性封装在一个list_products()以 aproduct_id array作为参数的独特函数中。
  • 执行select * from list_products(select_products_by_xxx())以获得每个xxx函数所需的结果。

例如,要product_id以相反的顺序选择(如果这对应用程序来说是任何有意义的选择),这样的函数就可以做到这一点。

它可以被测试为

为了封装查询的“列表”部分,我使用了这个函数(再次,为了示例的好处,非常简化并且没有任何连接或大小写)。

它有效,但不尊重传递数组中产品的顺序。

所以,问题是我传递了一个自定义的有序数组,product_idlist_products()函数不尊重数组内的顺序。

显然,我可以在 中包含一个order by子句list_products(),但请记住,排序必须由select_products_by_xxx()函数确定以保持list_products()唯一性。

任何想法?


编辑

@adamkg 解决方案简单且有效:添加一个通用的 order by 子句,如下所示:

但是,这意味着要订购两次产品:首先是 inside select_products_by_xxx(),然后是 inside list_products()

探索explain呈现以下结果:

现在我想知道是否还有其他更好的方法来降低成本,保持功能之间的可分离性。

我看到了两个有希望的策略:

  • 至于explain子句和问题本身,似乎product正在对表进行完整扫描list_products()。由于可能有数千种产品,更好的方法是扫描传递的数组。
  • 可以将xxx函数重构为 returnsetof int而不是int[]. 但是,集合不能作为函数参数传递。