Ricerca…


Media mobile centrata

Calcola una media mobile a 6 mesi (126 giorni lavorativi) centrata di un prezzo:

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

Tieni presente che, poiché saranno necessarie fino a 63 righe prima e dopo ogni riga restituita, all'inizio e alla fine dell'intervallo TradeDate non sarà centrato: quando raggiunge il TradeDate più grande sarà in grado di trovare solo 63 valori precedenti includere nella media.

Trova l'elemento più recente in un elenco di eventi con data e ora

Nelle tabelle che registrano eventi c'è spesso un campo datetime che registra l'ora in cui si è verificato un evento. Trovare il singolo evento più recente può essere difficile perché è sempre possibile che due eventi siano stati registrati con timestamp esattamente identici. Puoi usare row_number () over (order by ...) per assicurarti che tutti i record siano classificati in modo univoco e selezionare quello superiore (dove my_ranking = 1)

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

Questa stessa tecnica può essere utilizzata per restituire una singola riga da qualsiasi set di dati con valori potenzialmente duplicati.

Media mobile degli ultimi 30 articoli

Media mobile degli ultimi 30 articoli venduti

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow