首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取两个数字在两个不同日期之间的百分比变化。

获取两个数字在两个不同日期之间的百分比变化。
EN

Stack Overflow用户
提问于 2015-03-09 08:02:40
回答 1查看 35关注 0票数 0

我有以下格式的数据:

代码语言:javascript
运行
复制
run_date    test_alias  test_value
12/23/2014    1           12
11/22/2014    1           5
1/20/2015     1           7
2/20/2015     1           9

12/19/2014    2           12.1
2/19/2015     2           12.2
1/18/2015     2           12.3
11/17/2014    2           12.4

2/13/2015     3           4
1/13/2015     3           5
12/13/2014    3           7
11/13/2014    3           8

从今天的.In开始的最后3个月,当偏差的百分比在50%到80%之间时,我怎样才能得到记录的id,因为对于id 3,最后3个月的值是4 ,5和7 .So %,在这种情况下,偏差是7-4 =3/4 (75%),在50%到80%之间。

任何帮助都是很好的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 09:10:21

试试这个解决方案。如果您有任何问题,请问:

代码语言:javascript
运行
复制
DECLARE @t TABLE ( ID INT, D DATE, V MONEY )

INSERT  INTO @t
VALUES  ( 1, '20141223', 12 ),
        ( 1, '20141122', 5 ),
        ( 1, '20150120', 7 ),
        ( 1, '20150220', 9 ),
        ( 2, '20141219', 12.1 ),
        ( 2, '20150219', 12.2 ),
        ( 2, '20150118', 12.3 ),
        ( 2, '20141117', 12.4 ),
        ( 3, '20150213', 4 ),
        ( 3, '20150113', 5 ),
        ( 3, '20141213', 7 ),
        ( 3, '20141113', 8 );
WITH    cte
          AS ( SELECT   ID ,
                        D ,
                        V ,
                        ROW_NUMBER() OVER ( PARTITION BY ID ORDER BY D DESC ) AS RN
               FROM     @t
             )
    SELECT  c1.ID ,
            ( c1.V - c2.V ) / c2.V AS V
    FROM    cte c1
            JOIN cte c2 ON c2.ID = c1.ID
                           AND c2.RN = 1
    WHERE   c1.RN = 3
            AND ( c1.V - c2.V ) / c2.V BETWEEN 0.5 AND 0.8

输出:

代码语言:javascript
运行
复制
ID  V
3   0.75
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28937417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档