Sök…


Centrerat glidande medelvärde

Beräkna ett 6-månaders (126 arbetsdagar) centrerat rörligt medelvärde av ett pris:

SELECT TradeDate, AVG(Px) OVER (ORDER BY TradeDate ROWS BETWEEN 63 PRECEDING AND 63 FOLLOWING) AS PxMovingAverage
FROM HistoricalPrices

Observera att eftersom det kommer att ta upp till 63 rader före och efter varje återkommande rad, i början och slutet av TradeDate-intervallet kommer den inte att vara centrerad: När den når den största TradeDate kommer den bara att kunna hitta 63 föregående värden för att inkludera i genomsnittet.

Hitta det enskilt senaste objektet i en lista med tidsstämda händelser

I tabeller som spelar in händelser finns det ofta ett datetime-fält som registrerar den tid en händelse inträffade. Att hitta den senaste senaste händelsen kan vara svårt eftersom det alltid är möjligt att två händelser spelades in med exakt identiska tidsstämplar. Du kan använda radnummer () över (ordning efter ...) för att se till att alla poster är unikt rankade och välj den översta (där my_ranking = 1)

select *
from (
    select 
        *,
        row_number() over (order by crdate desc) as my_ranking
    from sys.sysobjects
) g
where my_ranking=1

Samma teknik kan användas för att returnera en enda rad från valfri datasats med potentiellt duplicerade värden.

Rörande medelvärde av de senaste 30 artiklarna

Rörande medelvärde av de senaste 30 sålda artiklarna

SELECT
    value_column1,
    (   SELECT
            AVG(value_column1) AS moving_average
        FROM Table1 T2
        WHERE ( SELECT
                    COUNT(*)
                FROM Table1 T3
                WHERE date_column1 BETWEEN T2.date_column1 AND T1.date_column1
                ) BETWEEN 1 AND 30
    ) as MovingAvg
FROM Table1 T1


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow