将其他日期的数据除以某一特定日期的数据
Posted
技术标签:
【中文标题】将其他日期的数据除以某一特定日期的数据【英文标题】:Divide data from other days by data from one particular day 【发布时间】:2012-06-17 13:43:03 【问题描述】:我在一个问题上卡住了几个小时。
假设我有一个包含以下数据的表格:
month outstanding
01/05/2012 35 678 956
02/05/2012 33 678 956
03/05/2012 31 678 956
04/05/2012 27 678 956
05/05/2012 24 678 956
我需要获取 2012 年 5 月 5 日结果与该月第一天的比率 例如。 2012 年 5 月 5 日未偿除以 2012 年 1 月 5 日未偿(24 678 956/35 678 956)
我应该使用什么功能? 尝试按 to_char(trunc(trunc(a.date_,'MM'), 'MM'),'DD-MM-YYYY') 的结果 / 进行分区
好像对我没用
【问题讨论】:
【参考方案1】:create table temp (month date , outstanding number);
insert into temp values(to_date('01/05/2012','dd/mm/yyyy'),35678956);
insert into temp values(to_date('02/05/2012','dd/mm/yyyy'),33678956);
insert into temp values(to_date('03/05/2012','dd/mm/yyyy'),31678956);
insert into temp values(to_date('04/05/2012','dd/mm/yyyy'),27678956);
insert into temp values(to_date('05/05/2012','dd/mm/yyyy'),24678956);
insert into temp values(to_date('01/06/2012','dd/mm/yyyy'),44678956);
insert into temp values(to_date('02/06/2012','dd/mm/yyyy'),41678956);
FIRST_VALUE
解析函数在执行ORDER BY
之后从分区中选择first record
SELECT month
,outstanding
,outstanding/(FIRST_VALUE(outstanding)
OVER (PARTITION BY to_char(month,'mm')
ORDER BY month
)) as ratio
FROM temp
ORDER BY month;
输出
MONTH OUTSTANDING RATIO
--------- ----------- ----------
01-MAY-12 35678956 1
02-MAY-12 33678956 .943944548
03-MAY-12 31678956 .887889096
04-MAY-12 27678956 .775778193
05-MAY-12 24678956 .691695015
01-JUN-12 44678956 1
02-JUN-12 41678956 .932854295
已选择 7 行。
SQLFIDDLE link
【讨论】:
【参考方案2】:试试这个:
SELECT t1.month,
t1.outstanding / t2.outstanding o2
FROM your_table t1
INNER JOIN
(SELECT *
FROM your_table
WHERE trunc(MONTH, 'mm') = MONTH) t2 ON trunc(t1.MONTH, 'mm') = t2.MONTH
【讨论】:
谢谢你,但我想到了我的,决定不这样做,因为它对我的数据来说太重了,我的意思是选择本身。有没有办法通过使用分析函数来使用“更智能”的移动?以上是关于将其他日期的数据除以某一特定日期的数据的主要内容,如果未能解决你的问题,请参考以下文章
我需要将当前日期与其他数据一起添加到 firebase Realtime 数据库,并在 kotlin android 中检索所有带有日期的数据