簡體   English   中英

如何通過窗口函數為聚合函數過濾SQL語句中的行?

[英]How to filter rows in SQL statement for aggregate function by window function?

我有一些表,並為用戶提供了根據現有數據生成新列的工具。

表:

+---+
|  a|
+---+
|  0|
|  1|
|  2|
|  3|
|  4|
|  5|
+---+

新列名稱: b

新列規則必須類似於: max(a) over(WHERE a < 3)

如何正確寫呢?

結果必須類似於SQL語句: SELECT *, (SELECT max(a) FROM table WHERE a < 3) as b FROM table 並返回:

+---+---+
|  a|  b|
+---+---+
|  0|  2|
|  1|  2|
|  2|  2|
|  3|  2|
|  4|  2|
|  5|  2|
+---+---+

但是我無法在over()WHERE語句中編寫內容,也無法允許用戶知道表的名稱。 我該如何解決這個問題?

只需使用帶有case的window函數:

select a, max(case when a < 3 then a end) over () as b
from t;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM