问题标签 [window-functions]

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 回答
199 浏览

sql - 查找匹配项在 postgresql 中的总时间

我有一个数据库,其中有一个名为 matchstats 的表,其中包含一个名为 time 的列,每次发生操作时都会更新它。我还有一个名为 groundstatsid 的列,当它不为空时,表示动作发生在地面上,而不是站立。最后,我有一个名为 Round 的专栏。

例子:

为了获得全职站立,我基本上希望查询第一次 (1) 并存储它,然后查看 groundstatsid 直到它看到一个 NON NULL 值并在该位置花费时间,减去存储到的较早数字获得站立时间 (17)。然后它会继续寻找 groundstatsid IS NULL 的位置。一旦找到该值,它应该执行相同的查找过程,直到在 groundstatsid 或新一轮中找到 NON NULL 值,在这种情况下,它将重新开始整个过程​​。

一旦它完成了整场比赛,我希望它对结果求和。

我希望该示例的查询返回 25。

0 投票
1 回答
944 浏览

postgresql - 如何用重复的 1,2,3,4, 1,2,3,4,... 系列对行进行编号

如何将长度为 4 的系列添加到这样的表中:

源表:

结果表:

我正在使用 PostgreSQL 9.1。

0 投票
8 回答
52970 浏览

sql - 为什么 where 子句中没有窗口函数?

标题说明了一切,为什么我不能在 SQL Server 的 where 子句中使用窗口函数?

这个查询很有意义:

但它不起作用。有比 CTE/子查询更好的方法吗?

编辑

值得一提的是带有 CTE 的查询:

编辑

+1 用于显示子查询的答案,但实际上我正在寻找无法在 where 子句中使用窗口函数的原因。

0 投票
4 回答
2587 浏览

sql - 按重复属性分组

基本上我有一个表messages,其中user_id包含标识创建消息的用户的字段。

当我显示两个用户之间的对话(一组消息)时,我希望能够按 对消息进行分组user_id,但是以一种棘手的方式:

假设有一些消息(按 排序created_at desc):

我想按以下顺序获取 3 个消息组: [1,2], [3,4], [5]

它应该按 *user_id* 分组,直到它看到另一个,然后按那个分组。

我正在使用 PostgreSQL,并且很乐意使用特定于它的东西,只要能提供最佳性能。

0 投票
1 回答
1798 浏览

sql - Oracle窗口函数中的求和

谁能告诉我oracle 分区中suma的意义是什么sum (SUM(SUM(VAL))),在下面的代码片段中

0 投票
2 回答
169 浏览

sql - 销售员每位客户的最高价格汇总

我有一张这样的桌子:

我想为每个独特的推销员和客户对的每个最高价格的销售找到一个 order_ids 数组。在这种情况下,我想要结果表:

到目前为止,我有一个查询大纲:

但是我在编写聚合函数max_client_salesman 时遇到了麻烦。

postgres 中聚合函数和数组的在线文档非常少。任何帮助表示赞赏。

0 投票
2 回答
16139 浏览

sql - 排序函数oracle sql

我是 sql 新手,正在做作业。有一个问题,我应该在哪里使用 rank 函数,但我不知道如何使用它。我试图在互联网上找到一些信息,但仍然有问题。我在这里发布问题,如果您有任何有用的文章或评论,请在此处发布。

谢谢,

0 投票
3 回答
1334 浏览

sql - Postgres 9.1 - 获取下一个值

我有一些看起来像这样的数据(按“时间戳”排序):

我需要为每条记录选择“TimeStamp”的下一个不仅仅是下一行)。

例如,上面的数据如下所示:

我一直在尝试为此使用窗口函数,但我无法得到这个结果。有什么想法吗?

0 投票
2 回答
54218 浏览

sql - TSQL OVER 子句:COUNT(*) OVER (ORDER BY a)

这是我的代码:

BOL 的这个页面上,微软说:

如果未指定 PARTITION BY,则该函数将查询结果集的所有行视为一个组。

所以根据我的理解,最后一条SELECT语句会给我以下结果。由于所有记录都被视为一个组,对吗?

但实际结果是:

任何人都可以帮助解释为什么?谢谢。

0 投票
1 回答
1225 浏览

sql - 在多列的单行中显示多行数据

我有一些带有时间戳的记录的 PostgreSQL 数据库。

是否有简单的方法在一段时间内(例如一个月,使用 PRECEDING 和 FOLLOWING 表达式)收集窗口中的数据,然后创建包含本月所有记录的多列(例如,每月每天 30 列)?

让我们考虑这个简单的情况:一个包含两列timestampmeasurement. 我想要的是获得31 列的表:时间戳和measurement1measurement2... measurement30measurement_i时间戳前 i 天的测量值在哪里。