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

sql - 枢轴内的窗口功能,可能吗?

我有这张桌子

在此处输入图像描述

我需要创建一个支点,将情绪显示为列,平均情绪级别按用户 ID、用户日期、情绪分组。例如,对于 user_id = 1、user_date = 2011-07-13 和emotion = 'Anger',平均emotion_level 应为4.0。

我创建了一个支点:

其中一半有效,但计算所有情绪中的平均情绪水平,但不适用于按用户、日期和情绪分组的情绪。

我对第一个用户的结果 + 情绪 = 'Anger' = 2,但应该是 4。

在此处输入图像描述

我想,我应该使用窗口函数(over(按 user_id、user_date、emotion 分区)),但无法运行语法。

有可能吗?

我在 prod 中使用 PostgreSQL 9,但上面的示例是用 SQL Server 编写的。

0 投票
2 回答
5444 浏览

sql - 优化 Vertica SQL 查询以执行运行总计

我有一个带有时间序列数据的表 S,如下所示:

对于给定的密钥,可能但不太可能会丢失几天。

我想从增量值(正整数)构造一个累积列,以便将此累积数据插入另一个表。这是我到目前为止所得到的:

在我的 SQL 风格中,默认窗口子句是 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,但我把它留在那里是明确的。

这个查询真的很慢,比旧的损坏查询慢了一个数量级,它用 0 填充累积计数。对于其他生成累积数字的方法有什么建议吗?

我确实在这里查看了解决方案: 按表中的分组记录运行总计

我使用的 RDBM 是 Vertica。Vertica SQL 排除了第一个子选择解决方案,它的查询计划器预测第二个左外连接解决方​​案的成本大约是我上面显示的分析形式的 100 倍。

0 投票
2 回答
10424 浏览

sql - 在 Postgres SQL 中选择正聚合值并忽略负值

我必须应用某种转换fn(argument)。这里argument等于value,但当它为负时不等于 。当你得到第一个负数value时,你“等待”直到它与连续值相加并且这个总和变为正数。然后你做fn(argument)。见我想得到的表:

我可以对所有值求和并应用于fn总和,但fn对于不同的行可能会有所不同,并且必须知道行号以选择具体的 fn。

想要一个 Postgres SQL 解决方案,看起来窗口函数很合适,但我还没有足够的经验来编写这样的表达式。事实上,不幸的是,我是“用 sql 思考”的新手。我想这可以通过命令式的方式轻松完成,但我还不想编写存储过程。

0 投票
4 回答
17291 浏览

audio - Why do I need to apply a window function to samples when building a power spectrum of an audio signal?

I have found for several times the following guidelines for getting the power spectrum of an audio signal:

  • collect N samples, where N is a power of 2
  • apply a suitable window function to the samples, e.g. Hanning
  • pass the windowed samples to an FFT routine - ideally you want a real-to-complex FFT but if all you have a is complex-to-complex FFT then pass 0 for all the imaginary input parts
  • calculate the squared magnitude of your FFT output bins (re * re + im * im)
  • (optional) calculate 10 * log10 of each magnitude squared output bin to get a magnitude value in dB
  • Now that you have your power spectrum you just need to identify the peak(s), which should be pretty straightforward if you have a reasonable S/N ratio. Note that frequency resolution improves with larger N. For the above example of 44.1 kHz sample rate and N = 32768 the frequency resolution of each bin is 44100 / 32768 = 1.35 Hz.

But... why do I need to apply a window function to the samples? What does that really means?

What about the power spectrum, is it the power of each frequency in the range of sample rate? (example: windows media player visualizer of sound?)

0 投票
3 回答
4394 浏览

sql - 在 Postgres 中为每个用户选择每第 N 行

我正在使用这个 SQL 语句:

但是每次表获得新行时,查询的结果都是不同的。
我错过了什么吗?

0 投票
1 回答
3504 浏览

postgresql - Postgres 会将 WHERE 子句下推到带有窗口函数(聚合)的 VIEW 中吗?

Pg 的 Window 函数的文档说:

窗口函数考虑的行是由查询的 FROM 子句生成的“虚拟表”中​​的行,这些行由其 WHERE、GROUP BY 和 HAVING 子句(如果有)过滤。例如,由于不满足 WHERE 条件而被删除的行不会被任何窗口函数看到。一个查询可以包含多个窗口函数,这些函数通过不同的 OVER 子句以不同的方式分割数据,但它们都作用于由该虚拟表定义的同一行集合。

但是,我没有看到这个。在我看来,选择过滤器非常靠近左边距和顶部(最后一件事)。

这两个 WindowAgg 从本质上将计划更改为似乎永远无法完成的事情

发生了什么事,我该如何解决?我正在使用 Postgresql 8.4.8。以下是实际视图正在执行的操作:

0 投票
2 回答
5501 浏览

sql - 在 PostgreSQL 的查询中使用窗口函数中的别名

我正在使用 PostgreSQL 9.1 版并查看Postgres 文档,我知道可以执行以下操作:

这适用于我的查询。

现在我需要能够在OVER (ORDER BY ...)?中指定别名而不是列名

我试过这个:

编辑:我以前忘记添加rank()到这个查询:

我收到一条错误消息column "result" does not exist.

是否可以在这里指定别名而不是列名?我错过了一些特殊的语法吗?

编辑:

我正在使用 Hibernate,并带有一些用于窗口函数的本机 SQL。生成并执行的完整 SQL 如下:

0 投票
3 回答
5820 浏览

sql - GROUP BY 和聚合顺序数值

使用 PostgreSQL 9.0。

假设我有一个包含以下字段的表companyprofessionyear。我想返回一个包含独特公司和专业的结果,但基于数字序列聚合(到一个数组中很好)年份:

示例表:

我对将输出类似于以下行的查询感兴趣:

基本特征是只能将连续年份组合在一起。

0 投票
1 回答
30527 浏览

sql - PostgreSQL:“按分钟”查询的运行行数

我需要每分钟查询到那一分钟的总行数。

到目前为止,我能达到的最好成绩并没有奏效。它返回每分钟计数,而不是每分钟的总计数:

0 投票
1 回答
335 浏览

python - 如何对多列主键进行窗口查询?

基于此处找到的示例,但我想我不理解它。这适用于单列主键,但在多个主键上失败。这是我的代码

现在我在比较主键的列集时遇到了问题。好吧,我猜应该是一种递归子句生成函数……让我们试试吧……