问题标签 [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.
sql - 查找匹配项在 postgresql 中的总时间
我有一个数据库,其中有一个名为 matchstats 的表,其中包含一个名为 time 的列,每次发生操作时都会更新它。我还有一个名为 groundstatsid 的列,当它不为空时,表示动作发生在地面上,而不是站立。最后,我有一个名为 Round 的专栏。
例子:
为了获得全职站立,我基本上希望查询第一次 (1) 并存储它,然后查看 groundstatsid 直到它看到一个 NON NULL 值并在该位置花费时间,减去存储到的较早数字获得站立时间 (17)。然后它会继续寻找 groundstatsid IS NULL 的位置。一旦找到该值,它应该执行相同的查找过程,直到在 groundstatsid 或新一轮中找到 NON NULL 值,在这种情况下,它将重新开始整个过程。
一旦它完成了整场比赛,我希望它对结果求和。
我希望该示例的查询返回 25。
postgresql - 如何用重复的 1,2,3,4, 1,2,3,4,... 系列对行进行编号
如何将长度为 4 的系列添加到这样的表中:
源表:
结果表:
我正在使用 PostgreSQL 9.1。
sql - 为什么 where 子句中没有窗口函数?
标题说明了一切,为什么我不能在 SQL Server 的 where 子句中使用窗口函数?
这个查询很有意义:
但它不起作用。有比 CTE/子查询更好的方法吗?
编辑
值得一提的是带有 CTE 的查询:
编辑
+1 用于显示子查询的答案,但实际上我正在寻找无法在 where 子句中使用窗口函数的原因。
sql - 按重复属性分组
基本上我有一个表messages
,其中user_id
包含标识创建消息的用户的字段。
当我显示两个用户之间的对话(一组消息)时,我希望能够按 对消息进行分组user_id
,但是以一种棘手的方式:
假设有一些消息(按 排序created_at desc
):
我想按以下顺序获取 3 个消息组:
[1,2], [3,4], [5]
它应该按 *user_id* 分组,直到它看到另一个,然后按那个分组。
我正在使用 PostgreSQL,并且很乐意使用特定于它的东西,只要能提供最佳性能。
sql - Oracle窗口函数中的求和
谁能告诉我oracle 分区中sum
a的意义是什么sum
(SUM(SUM(VAL)))
,在下面的代码片段中
sql - 销售员每位客户的最高价格汇总
我有一张这样的桌子:
我想为每个独特的推销员和客户对的每个最高价格的销售找到一个 order_ids 数组。在这种情况下,我想要结果表:
到目前为止,我有一个查询大纲:
但是我在编写聚合函数max_client_salesman 时遇到了麻烦。
postgres 中聚合函数和数组的在线文档非常少。任何帮助表示赞赏。
sql - 排序函数oracle sql
我是 sql 新手,正在做作业。有一个问题,我应该在哪里使用 rank 函数,但我不知道如何使用它。我试图在互联网上找到一些信息,但仍然有问题。我在这里发布问题,如果您有任何有用的文章或评论,请在此处发布。
谢谢,
sql - Postgres 9.1 - 获取下一个值
我有一些看起来像这样的数据(按“时间戳”排序):
我需要为每条记录选择“TimeStamp”的下一个值(不仅仅是下一行)。
例如,上面的数据如下所示:
我一直在尝试为此使用窗口函数,但我无法得到这个结果。有什么想法吗?
sql - TSQL OVER 子句:COUNT(*) OVER (ORDER BY a)
这是我的代码:
在BOL 的这个页面上,微软说:
如果未指定 PARTITION BY,则该函数将查询结果集的所有行视为一个组。
所以根据我的理解,最后一条SELECT
语句会给我以下结果。由于所有记录都被视为一个组,对吗?
但实际结果是:
任何人都可以帮助解释为什么?谢谢。
sql - 在多列的单行中显示多行数据
我有一些带有时间戳的记录的 PostgreSQL 数据库。
是否有简单的方法在一段时间内(例如一个月,使用 PRECEDING 和 FOLLOWING 表达式)收集窗口中的数据,然后创建包含本月所有记录的多列(例如,每月每天 30 列)?
让我们考虑这个简单的情况:一个包含两列timestamp
和measurement
. 我想要的是获得31 列的表:时间戳和measurement1
,measurement2
... measurement30
,measurement_i
时间戳前 i 天的测量值在哪里。