用于获得所有季度中每个ID的MAX先前分数的最佳方法.
鉴于:
ID QTR score 21 1 3 21 2 5 21 3 3 21 4 3 41 1 2 41 2 2 41 3 4 41 4 2
预期:
ID QTR PREV_MAX_score 21 1 3 21 2 5 21 3 5 21 4 5 41 1 2 41 2 2 41 3 4 41 4 4
解决方法
你可以尝试使用MAX窗口函数来实现它.
CREATE TABLE T( ID int,QTR int,score int ); insert into t values (21,1,3); insert into t values (21,2,5); insert into t values (21,3,4,3); insert into t values (41,2); insert into t values (41,4); insert into t values (41,2);
查询1:
SELECT t1.ID,t1.QTR,max(score) over(partition by ID order by QTR) score FROM T t1
| ID | QTR | score | |----|-----|-------| | 21 | 1 | 3 | | 21 | 2 | 5 | | 21 | 3 | 5 | | 21 | 4 | 5 | | 41 | 1 | 2 | | 41 | 2 | 2 | | 41 | 3 | 4 | | 41 | 4 | 4 |