Microsoft SQL Server
Funkcje okna
Szukaj…
Wyśrodkowana średnia krocząca
Oblicz średnią kroczącą ceny z 6 miesięcy (126 dni roboczych):
SELECT TradeDate, AVG(Px) OVER (ORDER BY TradeDate ROWS BETWEEN 63 PRECEDING AND 63 FOLLOWING) AS PxMovingAverage
FROM HistoricalPrices
Należy pamiętać, że ponieważ zajmie to do 63 wierszy przed każdym wierszem i po nim, na początku i na końcu zakresu TradeDate nie zostanie wyśrodkowane: gdy osiągnie największą wartość TradeDate, będzie w stanie znaleźć 63 poprzedzające wartości uwzględniać w średniej.
Znajdź pojedynczy najnowszy element na liście wydarzeń ze znacznikiem czasu
W tabelach rejestrujących zdarzenia często występuje pole datetime rejestrujące czas wystąpienia zdarzenia. Znalezienie jednego ostatniego zdarzenia może być trudne, ponieważ zawsze jest możliwe, że dwa zdarzenia zostały zarejestrowane z dokładnie identycznymi znacznikami czasu. Możesz użyć row_number () over (sortuj według ...), aby upewnić się, że wszystkie rekordy mają unikalną pozycję, i wybierz najwyższy (gdzie my_ranking = 1)
select *
from (
select
*,
row_number() over (order by crdate desc) as my_ranking
from sys.sysobjects
) g
where my_ranking=1
Tej samej techniki można użyć do zwrócenia pojedynczego wiersza z dowolnego zestawu danych z potencjalnie zduplikowanymi wartościami.
Średnia ruchoma ostatnich 30 przedmiotów
Średnia ruchoma z ostatnich 30 sprzedanych przedmiotów
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