【问题标题】:DB2 SQL: within group, assign value of column 2 when column 1 is at maximum, to each rowDB2 SQL:在组内,当第1列最大时,将第2列的值分配给每一行
【发布时间】:2018-02-27 01:51:32
【问题描述】:

我有这样的数据,对于 一个 组,即有更多这样的数据堆叠在一起:

现在,在每个组中,我想创建一个名为“relationship”的新列,其中我取 factor 的值(当 year=2018(最大值)时),并取每个值每行的因子并除以 2018 的因子值。 我可以使用 CLT 表达式分两步执行此操作,这一切都很好。

编辑:我想要的是这样的:

选择数据。* ,first(factor) over(partition by group order by group, year desc)

选择数据。* , 因子超过(其中 max(year))

【问题讨论】:

  • 组列在哪里?
  • 抱歉,我可能表述不清楚。您从上面的数据(图像)中看到的是一组,例如 Group=1。在每个组中,我想做解释的操作

标签: db2 partition


【解决方案1】:

我理解您的问题的方式与您提供的关系列的结果不同。 这是一个例子 - 也许你必须调整计算(以防我误解你)

SELECT group
     , year
     , age
     , factor
     , factor / first_value(factor) OVER(PARTITION BY group  ORDER BY year desc) as relationship
  FROM test_r

【讨论】:

  • 太棒了,我不知道first_value函数,非常感谢!我假设我可以毫无问题地扭转分数,所以这完全解决了我所看到的问题:)
猜你喜欢
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
相关资源
最近更新 更多