Zoeken…


Gecentreerd voortschrijdend gemiddelde

Bereken een gecentreerd voortschrijdend gemiddelde van een prijs over 6 maanden (126 werkdagen):

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

Omdat het tot 63 rijen vóór en na elke geretourneerde rij zal duren, aan het begin en einde van het TradeDate-bereik, zal het niet worden gecentreerd: wanneer het de grootste TradeDate bereikt, zal het alleen 63 voorafgaande waarden kunnen vinden om opnemen in het gemiddelde.

Zoek het meest recente item in een lijst met tijdstempelgebeurtenissen

In tabellen waarin gebeurtenissen worden vastgelegd, is er vaak een datetime-veld waarin de tijd wordt vastgelegd waarop een gebeurtenis plaatsvond. Het vinden van de meest recente gebeurtenis kan moeilijk zijn omdat het altijd mogelijk is dat twee gebeurtenissen met exact identieke tijdstempels zijn opgenomen. U kunt row_number () gebruiken boven (sorteren op ...) om ervoor te zorgen dat alle records uniek gerangschikt zijn en de bovenste selecteren (waarbij my_ranking = 1)

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

Dezelfde techniek kan worden gebruikt om een enkele rij te retourneren uit elke gegevensset met mogelijk dubbele waarden.

Voortschrijdend gemiddelde van de laatste 30 items

Voortschrijdend gemiddelde van de laatste 30 verkochte items

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow