【问题标题】:Having trouble to write an Oracle SQL query编写 Oracle SQL 查询时遇到问题
【发布时间】:2020-05-26 10:32:32
【问题描述】:

我有一张简单的桌子T(NAME, DATE, VALUE)

我想要得到包含最早DATE 的行的VALUE 和包含最早DATE 的行之间的区别,所有这些都按NAME 分组。

我无法将其写入单个查询。

非常欢迎任何帮助,我不知道如何执行此操作。

【问题讨论】:

标签: oracle date group-by


【解决方案1】:

这是一种选择;样本数据来自 #1 - 8 行;您可能需要的查询从第 10 行开始。

SQL> with t(name, datum, value) as
  2  -- sample data
  3    (select 'LF', date '2020-01-01', 100 from dual union all
  4     select 'LF', date '2020-04-13', 200 from dual union all
  5     select 'LF', date '2020-05-26', 555 from dual union all
  6     --
  7     select 'ST', date '2020-03-13', 600 from dual
  8    )
  9  -- query
 10  select distinct
 11    name,
 12    maxval - minval diff
 13  from (select name,
 14          first_value(value) over (partition by name order by datum desc) maxval,
 15          first_value(value) over (partition by name order by datum asc)  minval
 16        from t
 17       );

NA       DIFF
-- ----------
LF        455
ST          0

SQL>

【讨论】:

  • 哦,正是它!非常感谢,我需要练习这种查询我对partition byover 没有经验
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2020-05-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
相关资源
最近更新 更多