日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了SQL Server 2012中的遞歸衰減平均值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我需要計算衰減平均值(累積移動?)一組值的集合。序列中的最后一個值為50%權重,將所有先前序列的衰減平均值遞歸為另一個50%權重。

我提出了一個CTE查詢,它可以產生正確的結果,但它依賴于一個連續的行號。我想知道在SQL 2012中有沒有更好的方法來做到這一點,也許是使用over()的新窗口函數,或者類似的東西?

在實時數據中,行按時間排序。我可以使用一個SQL視圖和row_number()來為我的CTE方法生成必要的行字段,但是如果有更有效的方法來實現這一點,我希望盡可能地保持高效。

我有一個包含兩列的示例表:行int和值Float。我有6個樣例數據值1、2、3、4、4。正確的結果應該是3.78125。

我的解決方案是:

;WITH items AS (
  SELECT TOP 1 
    Row, Value, Value AS Decayed
    FROM Sample Order By Row
  UNION ALL
  SELECT v.Row, v.Value, Decayed * .5 + v.Value *.5 AS Decayed
  FROM Sample v
  INNER JOIN items itms ON itms.Row = v.Row-1
  )
SELECT top 1 Decayed FROM items order by Row desc

這將正確地生成測試數據的3.78125。我的問題是:在SQL 2012中有沒有更高效和/或更簡單的方法來實現這一點,或者這是唯一的方法?謝謝。

推薦答案

一種可能的替代方案是

WITH T AS
(
SELECT      
 Value * POWER(5E-1, ROW_NUMBER() 
                     OVER (ORDER BY Row DESC)
               /* first row decays less so special cased */
              -IIF(LEAD(Value) OVER (ORDER BY Row DESC) IS NULL,1,0))
       as x
FROM Sample
)
SELECT SUM(x)
FROM T

SQL Fiddle

或使用60%/40%

WITH T AS
(
SELECT   IIF(LEAD(Value) OVER (ORDER BY Row DESC) IS NULL,  1,0.6)
         * Value 
         * POWER(4E-1, ROW_NUMBER() OVER (ORDER BY Row DESC) -1)
       as x
FROM Sample
)
SELECT SUM(x)
FROM T

SQL Fiddle

上述兩種方法都對數據執行一次遍歷,并且可能使用Row INCLUDE(Value)上的索引來避免排序。

這篇關于SQL Server 2012中的遞歸衰減平均值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:common-table-expression errorRecursiveDecayingAverageinSqlServer2012 exce
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定