如何将窗口函数输出直接传递到 SQL 中的新窗口函数中?

皮亚诺1

我是 SQL 新手,我有以下查询:

-- Ref 1
SELECT *,
Max(Watts) OVER (PARTITION BY Freq) as MyMax,
log10(SUM(MyMax) OVER SumFunct * 1000) * 10 AS MySum
FROM MyTable
WINDOW SumFunct as (PARTITION BY temp, Freq, channel);

这不起作用,因为no such column: MyMax. 尽管根据我的理解,for 列MyMax是动态创建的,但我猜 SQL 仍然无法立即使用它的值作为下一个窗口函数的输入

我已经尝试为 MaxPower 创建列并在上面的查询之前填充它,通过

-- Ref 2
ALTER TABLE MyTable ADD COLUMN MyMax real;
UPDATE MyTable SET MyMax = sub.MyMax 
FROM (
   SELECT *, Max(Watts) OVER (PARTITION BY Freq) AS MyMax
) sub;

但我不知道如何在语句中设置MyMax窗口函数。UPDATE我的尝试是创建一个子查询,但我觉得我把问题复杂化了,而且由于SELECT我无法隔离的一些语法,我也没有得到这个工作。

我要做的就是MyMax使用上面的窗口函数进行查询,并将其通过管道传递到一个新的窗口函数中。结果:两个额外的列包含我需要的数据。我对窗口函数的理解是,它们会即时创建您想要的列,但即使我将顶部查询(参考 1)分成两个不同的调用:

-- Ref3
SELECT *,
Max(Watts) OVER (PARTITION BY Freq) as MyMax,
FROM MyTable;
SELECT *,
log10(SUM(MyMax) OVER SumFunct * 1000) * 10 AS MySum
FROM MyTable
WINDOW SumFunct as (PARTITION BY temp, Freq, channel);

它仍然无法识别是什么MyMax有没有人对如何解决这个问题有任何指导?

去世

不允许嵌套窗口函数。

您需要一个返回的子查询和一个返回MyMax的主查询MySum

SELECT *, log10(SUM(MyMax) OVER SumFunct * 1000) * 10 AS MySum
FROM (
  SELECT *, Max(Watts) OVER (PARTITION BY Freq) AS MyMax
  FROM MyTable
)
WINDOW SumFunct as (PARTITION BY temp, Freq, channel);

或者,CTE:

WITH cte AS (
  SELECT *, Max(Watts) OVER (PARTITION BY Freq) as MyMax
  FROM MyTable
)
SELECT *, log10(SUM(MyMax) OVER SumFunct * 1000) * 10 AS MySum
FROM cte
WINDOW SumFunct as (PARTITION BY temp, Freq, channel);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在新窗口或选项卡中打开的 js 函数

来自分类Dev

限制在SQL窗口函数中设置的结果

来自分类Dev

在 SQL 窗口函数中列出或连接

来自分类Dev

如何更新窗口而不是在 wpf 中创建新窗口

来自分类Dev

如何在SQL中执行此操作(PostgreSQL窗口函数?)

来自分类Dev

在可可中添加新窗口

来自分类Dev

在Jframe中打开新窗口

来自分类Dev

电子中的新窗口定位

来自分类Dev

在Swift中打开新窗口

来自分类Dev

SAS中的按组与SQL中的窗口函数

来自分类Dev

导航到 Prism WPF 中的新窗口

来自分类Dev

如何在Tkinter中没有.mainloop()函数的情况下刷新窗口?

来自分类Dev

如何在python中刷新窗口

来自分类Dev

如何在pygame中创建新窗口?

来自分类Dev

如何在watIn中检测新窗口

来自分类Dev

窗口函数在sql的操作顺序中位于何处?

来自分类Dev

使用PostgreSQL中的窗口函数进行SQL查询累积总和

来自分类Dev

如何在struts2中使用jsp将值传递到新窗口

来自分类Dev

如何将输入数据显示到iframe中而不是新窗口中?

来自分类Dev

在MVC5中,如何打开新窗口并传递参数?

来自分类Dev

WPF中Prism弹出新窗口

来自分类Dev

无法在Chrome中打开新窗口

来自分类Dev

IE中无法调整新窗口的大小

来自分类Dev

在新标签页中打开新窗口

来自分类Dev

在MVVM WPF中打开新窗口

来自分类Dev

在信息框Shinydashboard中打开新窗口

来自分类Dev

用OpenERP中的按钮打开新窗口

来自分类Dev

在新窗口/标签角中打开按钮

来自分类Dev

WPF从事件中打开新窗口