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

前端之家收集整理的这篇文章主要介绍了Oracle SQL:以前所有季度中的MAX之前的疼痛前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用于获得所有季度中每个ID的MAX先前分数的最佳方法. @H_301_7@

@H_301_7@鉴于:

@H_301_7@

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
@H_301_7@预期:

@H_301_7@

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窗口函数来实现它. @H_301_7@

@H_301_7@

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);
@H_301_7@查询1:

@H_301_7@

SELECT t1.ID,t1.QTR,max(score) over(partition by ID order by QTR) score
FROM T t1
@H_301_7@Results

@H_301_7@

| 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相关文章