Oracle SQL:先前所有季度中以前的MAX疮

时间:2018-10-26 08:10:35

标签: sql oracle

用于获得所有季度中每个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

2 个答案:

答案 0 :(得分:4)

您可以尝试使用BeginDeferWindowPos/DeferWindowPos/EndDeferWindowPos窗口函数来制作它。

MAX

查询1

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,3); 
insert into t values (21,4,3); 
insert into t values (41,1,2); 
insert into t values (41,2,2); 
insert into t values (41,3,4); 
insert into t values (41,4,2); 

Results

SELECT t1.ID,
       t1.QTR,
       max(SCORE) over(partition by ID order by QTR) SCORE
FROM T t1

答案 1 :(得分:2)

相关的子查询可能用作:

array.group_by(&:itself)
     .max_by { |k, v| v.size }
     .first

Rextester Demo