繁体   English   中英

如何使用 sql 查询在日期列中按值和最大值分组的表中添加列?

[英]How to add column in table grouped by value and max value in date column using sql query?

我有一张桌子:

id   date           val
1    10.08.2022     10
1    12.08.2022     11
1    08.08.2022     15
1    16.08.2022     9
2    02.07.2022     2
2    01.07.2022     4
2    30.07.2022     7

我想创建两个新列 last_v 和 max_v,它们等于每个 id 按日期的 last val 和每个 id 的最大 val。 所以想要的 output 是:

id   date           val   last_v   max_v
1    10.08.2022     10      9        15
1    12.08.2022     11      9        15
1    08.08.2022     15      9        15
1    16.08.2022     9       9        15
2    02.07.2022     2       2        7
2    01.07.2022     4       2        7
2    30.06.2022     7       2        7

我怎么能那样做?

可以使用window功能!

select t.*,
    first_value(val) over(partition by id order by dt desc) last_val,
    max(val) over(partition by id) max_val
from mytable t

DB Fiddle 演示

ID dt 最后一个值 最大值
1个 2022-08-08 15 9 15
1个 2022-08-10 10 9 15
1个 2022-08-12 11 9 15
1个 2022-08-16 9 9 15
2个 2022-06-30 7 2个 7
2个 2022-07-01 4个 2个 7
2个 2022-07-02 2个 2个 7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM