[英]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.