Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Rekurencyjna zanikająca średnia w Sql Server 2012

Jedną z możliwych alternatyw byłoby

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

Skrzypce SQL

Lub dla zaktualizowanego pytania za pomocą 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

oba powyższe wykonują jednokrotne przejście przez dane i mogą potencjalnie użyć indeksu w Row INCLUDE(Value) aby uniknąć sortowania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Normalizacja bardzo dużego stołu

  2. Jak dodać ciąg z wartością automatycznego przyrostu w programie SQL Server?

  3. Logowanie nie powiodło się dla użytkownika „DOMAIN\MACHINENAME$”

  4. JBoss ponownie łączy się po przekroczeniu limitu czasu połączenia

  5. ISJSON() Przykłady w SQL Server (T-SQL)