总计总和-按年份-按分组

pb3skfrl  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(328)

我有一张如下的table:

  1. col1 Date Total
  2. id1 2019-01-19 876
  3. id1 2019-02-12 987
  4. id2 2019-12-12 9879
  5. id2 2017-07-23 27652
  6. id2 2018-12-09 765
  7. id2 2018-12-28 2987
  8. id1 2016-11-09 2871
  9. id2 2016-05-19 87687

我想计算一下 sum of Total in latest year - sum of Total in earliest year 启用“分组方式” col1 输出:

  1. col1 output
  2. id1 -1008
  3. id2 -77808
sqxo8psd

sqxo8psd1#

oracle没有直接的“first()”和“last()”聚合函数。然而,它确实有 keep 用更麻烦的语法做同样的事情。
这允许您按年份和时间汇总数据 col1 . 然后就可以对第一个和最后一个值进行算术运算:

  1. SELECT col1,
  2. (MAX( sum_total ) KEEP (DENSE_RANK FIRST ORDER BY year DESC) -
  3. MAX( sum_total ) KEEP (DENSE_RANK FIRST ORDER BY year ASC)
  4. ) as output
  5. FROM (SELECT col1, TRUNC( dt, 'YYYY') AS year,
  6. SUM( total ) as sum_total
  7. FROM table_name
  8. GROUP BY col1, TRUNC(dt, 'YYYY')
  9. ) cy
  10. GROUP BY col1;

这是一把小提琴。

相关问题