0

我有一些表,並提供工具給用戶生成基於現有的新列。如何通過窗口函數篩選聚合函數的SQL語句中的行?

表:

+---+ 
| 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語句中寫入,並且不能讓用戶知道表的名字。我該如何解決這個問題?

回答

0

只需使用一個窗口函數case

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