Oracle SQL:以前所有季度中的MAX之前的疼痛

前端之家收集整理的这篇文章主要介绍了Oracle SQL:以前所有季度中的MAX之前的疼痛前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用于获得所有季度中每个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

Results

| 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 |

猜你在找的Oracle相关文章