sql - 甲骨文 SQL : Previous MAX sore in all previous quarters

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

最佳答案

可以尝试使用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,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); 

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

关于sql - 甲骨文 SQL : Previous MAX sore in all previous quarters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53004268/

相关文章:

java - 将 CLOB 插入 Oracle 数据库

sql - 使用 rownum 查询变慢

MySQL 多个 Where 子句

mysql - 选择MySQL列的默认值

oracle - 将 oracle 查询中的多列值分配给 Unix 中的多个变量

java - 我可以强制 Java 忽略时区吗?

c# - Oracle 架构名称

mysql - 在 MySQL 中存储 IPv6 地址

sql - 如何计算嵌入字符串中的不同时间戳?

php - 如何将 IN 子句的一组值传递给 pg_execute() 数组