问题标签 [generate-series]

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 投票
2 回答
365 浏览

sql - 选择所有不在postgres表中的整数

我在表格中有一些 id,但两者之间存在差距。我想选择这些差距。
例如,我表中的整数是:

我想选择:

我的 PostgreSQL 版本是 9.1.1,所以我不能使用 int4range。

0 投票
2 回答
646 浏览

sql - 使用选择查询加入 postgres 中的系列

我正在寻找一种方法来加入这两个查询(或一起运行这两个):

使用此查询:

在某种程度上,我得到 50 行这样的:

我已经做了几天了,我无法弄清楚。任何帮助都会很棒。

0 投票
2 回答
60642 浏览

sql - 根据 ISO 标准,2015 年和 2016 年每个月有多少周?

今年2014有:

如何计算任何给定年份的这个?

0 投票
1 回答
2286 浏览

sql - 如何将列添加到 generate_series 查询

在查看日期范围时,是否还有generate_series返回开始日期和结束日期?

给出这个输出

这很好,但是我想拥有

原因是我正在从另一个表中提取多个开始/结束对,但无法找出将它们连接在一起的方法。我也在使用 PostgeSQL 版本 8.2.15(因此generate_series功能更复杂)。

为了将此扩展到我的主要问题,我有一个包含这些开始和结束时间对的表。

如何遍历此表并将其与扩展的日期范围连接?

0 投票
1 回答
1367 浏览

postgresql - Join on generate_series and count

I'm trying to find the # users who did action A or action B on a monthly basis.

Table: User - id - "creationDate"

Table: action_A - user_id (= user.id) - "creationDate"

Table: action_B - user_id (= user.id) - "creationDate"

The general idea of what I was trying to do was that I'd find the list of users who did action A in Month X and the list of users who did action B in Month X, then count how many ids are there for every month based on a generate_series of monthly dates.

I tried the following, however, the query times out when running and I'm not sure if there's any way to optimize it (or if it is even correct).

Any comments/ help would be immensely helpful!

0 投票
1 回答
1678 浏览

sql - 选择一行并用不同的 ID 将其插入 n 次

我正在尝试在 Postgres 中提出一个脚本,该脚本将选择表中的第一行并将该行x多次插入到同一个表中。

这是我所拥有的:

以上显然是行不通的。

0 投票
1 回答
1163 浏览

postgresql - 使用 generate_series 创建表

在 Amazon Redshift 中,generate_series()领导节点似乎支持,但计算节点不支持。有没有办法使用 generate_series 在领导节点上创建表,然后将其推送到计算节点?

此查询运行良好,在领导节点上运行:

但是,此查询失败:

我现在能想到的唯一解决方案是将查询结果拉入另一个程序(例如python),然后将结果插入数据库,但这似乎很hackish。

对于那些从未使用过 redshift 的人来说,它是 postgresql 的一个经过大量修改的变体,并且有很多自己的特质。以下查询完全有效,运行良好:

产量:

问题源于仅领导节点功能和红移计算节点功能之间的差异。我很确定这不是由于我的查询中的错误。

0 投票
2 回答
2495 浏览

sql - 每周记录总数

我有一个 Postgres 9.1 数据库。我正在尝试生成每周的记录数(对于给定的日期范围)并将其与上一年进行比较。

我有以下代码用于生成系列:

但是,我不确定如何将计数的记录加入到生成的日期中。

因此,以以下记录为例:

我想让记录返回为:

不确定如何在子搜索中引用日期范围。感谢您的任何帮助。

0 投票
1 回答
113 浏览

postgresql - 如何让简单的哈希连接查询和复杂的排序合并查询一样执行?

我有一个记录有关正在运行的进程的信息的系统。每个正在运行的进程都包含一系列可能并行运行也可能不并行运行的步骤。系统将有关进程及其步骤的信息记录到两个单独的表中:

pid_step表包含关于每个步骤的大量资源使用统计信息,我在此处将其简化为仅mem记录为该步骤分配的内存字节数的列。我想按进程标签对内存分配进行采样,也许每隔 5 秒,所以我可以绘制它。我需要类似于以下的结果:

由于日志只给我每个进程和步骤的开始和结束时间戳,而不是每隔 5 秒的资源使用示例,我需要找到最有效的方法来确定每 5 秒间隔运行哪些进程步骤(打勾)然后聚合他们分配的内存。我已经进行了 3 次单独的尝试,它们都产生了相同的结果,但性能水平不同。为简洁起见,我将把每个查询及其解释计划放在一个要点中(https://gist.github.com/anonymous/3b57f70015b0d234a2de),但我会为每个查询解释我的方法:

  1. 这是我的第一次尝试,它绝对是最直观和最容易维护的。它交叉连接不同的进程标签,generate_series为每个标签生成 5 秒的刻度,然后在pidpid_step表上进行左连接。左连接创建“零填充”效果,并确保我们不会丢弃任何没有关联数据的报价。不幸的是,这种方法表现最差(请参阅下面的基准链接),我相信这是由于使用了哈希连接,其中between t2.start_time and t2.end_time谓词被处理为连接过滤器而不是连接条件。

  2. 这是我的第二次尝试,它的性能更好,但不太直观和可维护。“零填充”方法与查询 1 中的方法相同。但是,在执行 and 的左连接之前pidpid_step我根据最大进程经过时间和进程步骤开始和结束时间预先计算具有关联数据的刻度. 这允许排序合并连接,其中刻度和标签谓词都可以表示为连接条件,并且不使用连接过滤器。

  3. 这是我的最后一次尝试,它以与查询 2 大致相同的直观性和可维护性表现最佳。这里的优化是我使用了最大流程步骤经过时间,它保证小于最大流程经过时间,因此创建了一个CTE t3 开始时的较小嵌套循环。

理想情况下,我希望 SQL 与查询 1 一样简单且可维护,但性能与查询 3 一样好。我可以通过索引或稍微重写查询 1 来提高性能吗?

基准测试结果:http: //i.imgur.com/yZxdQlM.png

0 投票
1 回答
408 浏览

sql - 查询具有给定采样时间的聚合数据

假设我的原始数据是:

采样时间为 1 秒,输出数据应如下所示(添加附加列):

抽样单位从不同1 second, 5 sec, 1 minute, 1 hour, 1 day, ...

如何使用 Rails 在 PostgreSQL 数据库中快速查询采样数据?

我想通过获取错误来填充所有间隔

SQL