我有一个看起来像这样的表格,其中包含有关对象位置及其存在时间(年龄)的信息:
Date ID Age x y
2021-03-25 20 1 531 295
2021-03-25 20 2 478 272
2021-03-25 20 3 421 272
2021-03-26 20 1 478 286
2021-03-26 21 1 903 342
我正在尝试选择某个 ID 的 x 位置,当年龄处于该 ID 的最小值(名为 xStart 的列)时,和它处于最大值(名为 xFin 的列)。每天的 ID 代表不同的对象,因此 25 日的 ID 20 与 26 日的 ID 20 不会是同一个对象。
我希望结果表看起来像这样:
Date ID Age x y xStart xEnd
2021-03-25 20 1 531 295 531 421
2021-03-25 20 2 478 272 531 421
2021-03-25 20 3 421 272 531 421
2021-03-26 20 1 478 286 478 some number
2021-03-26 21 1 903 342 908 some other number
该表可以为每个 ID 分组:
Date ID MAX(Age) xStart xEnd
2021-03-25 20 3 531 421
2021-03-26 20 1 478 some number
2021-03-26 21 1 908 some other number
答案 0 :(得分:0)
如果我理解,您可以使用窗口函数:
select distinct date, id,
max(age) over (partition by date, id),
first_value(x) over (partition by date, id order by age) as xstart,
first_value(x) over (partition by date, id order by age desc) as xend
from t;