问题标签 [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 回答
21564 浏览

sql - How to use a SQL window function to calculate a percentage of an aggregate

I need to calculate percentages of various dimensions in a table. I'd like to simplify things by using window functions to calculate the denominator, however I am having an issue because the numerator has to be an aggregate as well.

As a simple example, take the following table:

If I just want to calculate the share of each individual row out of d1, then windowing functions work fine:

However, what I need to do is calculate the overall share for the sum of d2 out of d1. The output I am looking for is this:

So I try this:

However, now I get an error:

I'm assuming this is because it is complaining that the window function is not accounted for in the grouping clause, however windowing functions cannot be put in the grouping clause anyway.

This is using Greenplum 4.1, which is a fork of Postgresql 8.4 and shares the same windowing functions. Note that Greenplum cannot do correlated subqueries.

0 投票
1 回答
16916 浏览

sql - 为具有分组的视图生成 id 行

我正在尝试使用如下行号创建一个视图:

我最终得到了重复的行。SELECT DISTINCT也不行。有任何想法吗?

交易表:

工作表:

查看输出:

查看输出

0 投票
6 回答
136091 浏览

sql - 带有元素编号的 PostgreSQL unnest()

当我有一个带有分隔值的列时,我可以使用该unnest()函数:

如何包含元素编号?IE:

我想要源字符串中每个元素的原始位置。我尝试过使用窗口函数(row_number()rank()),但我总是得到1. 也许是因为它们在源表的同一行?

我知道这是一个糟糕的桌子设计。这不是我的,我只是想解决它。

0 投票
1 回答
141 浏览

sql - 一个窗口中的多行可以被分析函数引用吗?

给定一张桌子:

我想计算这样的东西:

其中每行的 SUM 是每个后续行的值的总和乘以后续行的值与当前行的值之差。

我可以从这样的事情开始:

其中每一行都有所有后续行的总和。但更进一步,我真的想要这样的伪代码:

但这是无效的。这就是问题的关键:有没有办法在分析函数的窗口中引用多行?或者另一种方法来解决这个问题?上面的例子是人为的。我实际上是在玩另一个帖子汇总查询中的一个有趣的谜题,这导致我遇到了这个问题。我在 Postgresql 9.1 中尝试这样做,但不受此限制。

0 投票
1 回答
21927 浏览

sql - Postgres 窗口函数和按异常分组

我正在尝试组合一个查询,该查询将在一段时间内检索用户的统计数据(利润/损失)作为累积结果。

这是我到目前为止的查询:

查询将运行。但是,结果有点不正确。原因是一个event可以有多个游戏(不同的sp.payouts)。因此,如果用户在具有不同支出的事件中有 2 个结果(即,每个事件有 4 场比赛,并且用户从一场比赛中获得 20 英镑,从另一场比赛中获得 40 英镑),则上面会出现多行。

显而易见的解决方案是将其修改GROUP BY为:

但是,Postgres 对此抱怨,因为它似乎没有意识到这一点sp.payout并且s.buyin在聚合函数中。我得到错误:

列“sp.payout”必须出现在 GROUP BY 子句中或在聚合函数中使用

我在 Ubuntu Linux 服务器上运行 9.1。
我是否遗漏了什么,或者这可能是 Postgres 的真正缺陷?

0 投票
4 回答
2139 浏览

c# - 是否有与 C# 中的 F# Seq.windowed 等效的功能?

我正在编写一些 C# 代码来处理诸如移动平均线之类的问题,我经常需要使用 List / IEnumerable 并处理大量连续数据。F# Seq 模块有一个很棒的函数,windowed,它接受一个序列,返回一个连续元素块的序列。

C# 是否具有与 LINQ 相同的开箱即用功能?

0 投票
3 回答
2313 浏览

sql - ROW_NUMBER 和 PARTITION 查询返回所有排名为 1 的行

我在查询时遇到问题,我希望它根据记录上次更改的时间对结果进行排名。

它返回所有 1 的排名。

0 投票
2 回答
320 浏览

sql - What is the result set ordering when using window functions that have `order by` components?

I'm working on a query on the SEDE:

What is the ordering of the result set, taking into account the two window functions?

I suspect it's undefined but couldn't find a definitive answer. OTOH, results from queries with one such window function were ordered according to the over(order by ...) clause.

0 投票
1 回答
1513 浏览

sql - 在 SQL 中使用窗口函数运行“匹配”总数

我想创建一个窗口函数,该函数将计算当前行中字段的值出现在当前行之前的有序分区部分中的次数。为了使这个更具体,假设我们有一个像这样的表:

我们想创建一个像这样的表(为了清楚起见,省略了日期列):

请注意,对于id = 1,沿着有序分区移动,第一个条目 'apple' 不匹配任何内容(因为隐含集合为空),下一个水果 'cherry' 也不匹配。然后我们再次进入“apple”,这是一个匹配项,依此类推。我想象 SQL 看起来像这样:

但我找不到任何看起来正确的东西。FWIW,我使用的是 PostgreSQL 8.4。

0 投票
1 回答
2996 浏览

postgresql - PostgreSQL:有效地获得序数排名(行索引?)

你有一张像这样的桌子:

我想要一个更新表的排名列 (dollars_rankpoints_rank) 的查询来设置给定 ID 的排名,这只是该 ID 的行索引,按相关列按降序排序。在 PostgreSQL 中如何最好地做到这一点?