[英]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
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.