问题标签 [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 投票
4 回答
45 浏览

sql - 只显示最新/最新记录

好的,所以我有一个显示级别的列和一个显示已停止在该特定级别玩的玩家的列。

现在一个玩到 5 级的玩家也被列在 4、3、2 和 1 级。这正是我不想要的。如果一个玩家已经玩到 5 级,我希望他只被计算在 5 级的行中,依此类推。

怎么做?

例如,这就是我得到的:

这就是我要的:

920 名玩家达到了 104 级(当然也玩了 101 级)并停在那里,1426 人只玩了 101 级并且已经停在那里。但结果我得到了达到 4 级的 920 也算在 101 级行。

如何避免?

0 投票
2 回答
2137 浏览

sql - Postgres 窗口函数语法

为什么会出现以下查询:

select ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY time DESC) as rownum FROM users where rownum < 20;

产生以下错误?

ERROR: column "rownum" does not exist LINE 1: ...d ORDER BY time DESC) as rownum FROM users where rownum < 2...

如何构造这个查询,以便获得前 20 个项目,由我的窗口函数定义?

user_id并且time都是在 上定义的列users

0 投票
0 回答
204 浏览

sql-server-2008 - 索引无法在 SQL Server 中索引的视图的低维护替代方案?

我试图索引我的视图,因为数据是相对静态的,它可以提高性能。

我无法索引视图,因为它包含“排名或聚合窗口函数”。有解决方法吗?

这个视图只是在学生对问题的回答中添加了一个尝试次数,我认为这对于索引视图来说是一个完美的场景,但是 SQL Server 不支持对具有窗口函数的视图进行索引。

我可以手动生成一个缓存表,但我希望这是低维护的,所以我不必记住做这样的事情:

例如,也许我可以创建某种触发器(我不熟悉触发器),当基表更改时将视图插入缓存表......这基本上是视图上的索引应该做的事情在底层(虽然效率更高,因为它可以更新索引而不是在基表数据更改时完全替换它)。

0 投票
6 回答
47044 浏览

sql - 使用 CASE 和 GROUP BY 的动态替代方案

我有一个看起来像这样的表:

我希望它看起来像这样:

我有这个查询:

这是一种非常随意的方法,如果要创建很多新列,就会变得笨拙。我想知道这些CASE语句是否可以更好地使这个查询更加动态?另外,我很想看到其他方法来做到这一点。

0 投票
3 回答
6781 浏览

sql - 使用来自 self 的值更新 PostgreSQL 表

我正在尝试使用同一表中另一行的值更新表上的多个列:

任务是填充年龄最接近他们的人的姓名和生日,但不是年龄更大或年龄相同younger_sibling_nameyounger_sibling_dob

我可以dob轻松设置年幼的兄弟姐妹,因为这是确定要与相关子查询一起使用的记录的值(我认为这是一个例子?):

我只是看不到任何方法来获得name
对于每个 MAX 选择,真正的查询将在 100-500 组中运行大约1M 行,因此性能是一个问题。

编辑

在尝试了许多不同的方法之后,我决定采用这种方法,我认为这是一种很好的平衡,能够用中间结果验证数据,显示逻辑的意图,并充分执行:

0 投票
1 回答
1700 浏览

postgresql - 过去 X 个月内的 PostgreSQL 累积计数

给定下表:

我想查询每个 (user_id, month_d) 对的最后 6 个月的累积计数。我可以通过以下 JOIN 来做到这一点:

但我想知道这是否可以用窗口函数解决?

样本数据:

预期结果(来自上面的连接):

0 投票
4 回答
1895 浏览

postgresql - 我可以在学说 2 中使用窗口函数吗?

上面的查询在 postgresql 中,我想将其转换为 DQL,但我在 DQL 中找不到任何关于窗口函数的文档,这是在教义中本机支持的,还是我必须为此创建一个自定义 dql 函数?

0 投票
3 回答
337 浏览

nhibernate - 休眠和窗口函数

有什么方法可以让 NHibernate 使用 Window 函数?

具体来说,我希望创建如下查询:

我在网上搜索并找不到任何关于窗口函数和 NHibernate 的信息

具体来说,我使用 NHibernate 的 QueryOver 接口。

如果不可能,还有哪些其他解决方案可以在我的代码中保持数据库独立性?

0 投票
2 回答
40122 浏览

sql - 遍历 PostgreSQL 记录。如何引用下一行的数据?

我是 PostgreSQL 新手,在这里编写函数非常困难。所以我希望有人可以帮助让我知道如何做我想做的事情。

我有一张股票价格和日期表。我想计算每个条目与前一天相比的百分比变化。对于数据的最早日期,不会有前一天,因此该条目可以简单地为 Nil。有人可以查看我的函数并帮助我
a)如何引用下一行的数据和
b)帮助我清理它吗?

我知道该WITH声明可能不应该高于该IF声明。然而,从逻辑上讲,这就是我迄今为止的想法,也是我编写它的方式。如果您能建议应该如何看待它,那也将不胜感激。

PostgreSQL 9.2。

0 投票
3 回答
25898 浏览

sql - PostgreSQL - 我应该如何使用 first_value()?

这个答案显示了如何从股票代码中产生高/低/打开/关闭值:
检索任意时间间隔的聚合

我正在尝试基于此(PG 9.2)实施解决方案,但难以获得正确的first_value().

到目前为止,我已经尝试了两个查询:

这是结果的一部分:

如您所见,77.8不是我认为的正确值first_value(),应该是 77.0。

我虽然这可能是由于 中的模棱两可ORDER BYWINDOW所以我将其更改为

但这似乎也令人不安PARTITION

因为 max 和 last 的值现在在分区内有所不同

我究竟做错了什么?有人可以帮助我更好地理解 a 之间的关系PARTITION吗?ORDERWINDOW


虽然我有一个答案,但这里有一个精简的 pg_dump,它允许任何人重新创建表。唯一不同的是表名。