簡體   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