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

Obliczanie zwrotów powiązanych geometrycznie w SQL SERVER 2008

Masz dwie możliwości uzyskania produktu w SQL Server.

1. Symuluj za pomocą logów i wykładników:

Skrzypce SQL

create table returns
(
  returnDate date,
  returnValue float
)

insert into returns values('05/31/06', -0.002271835)
insert into returns values('06/30/06', -0.001095986)
insert into returns values('07/31/06', 0.006984908)
insert into returns values('08/31/06', 0.014865360)
insert into returns values('09/30/06', 0.008938896)

select totalReturn = power
  (
    cast(10.0 as float)
    , sum(log10(returnValue + 1.0))
  ) - 1
from returns;

with tr as
(
  select totalReturn = power
  (
    cast(10.0 as float)
    , sum(log10(returnValue + 1.0))
  ) - 1
  , months = cast(count(1) as float)
  from returns
)
select annualized = power(totalReturn + 1, (1.0 / (months / 12.0))) - 1
from tr;

Wykorzystuje to logi i wykładniki do symulacji obliczeń produktu. Więcej informacji:Funkcje zdefiniowane przez użytkownika .

Jedynym problemem jest to, że nie powiedzie się w przypadku zwrotu <-100%. Jeśli się ich nie spodziewasz, wszystko jest w porządku, w przeciwnym razie musisz ustawić dowolne wartości od <100% do -100%.

Możesz następnie użyć tego rzeczywistego zwrotu, aby uzyskać roczny zwrot zgodnie z wymaganiami.

2. Zdefiniuj agregację niestandardową za pomocą CLR:

Zobacz Książki online .

Możesz utworzyć niestandardową funkcję CLR, a następnie połączyć ją z agregatem do użycia w zapytaniach. To jest więcej pracy i będziesz musiał włączyć CLR na swoim serwerze, ale gdy to zrobisz, możesz z niego korzystać tyle, ile jest to wymagane.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:komunikat 102, poziom 15, stan 1, wiersz 2 Nieprawidłowa składnia w pobliżu „=”

  2. Wypróbuj te sprawdzone metody monitorowania bazy danych MySQL

  3. Jak zapytać o role bieżącego użytkownika

  4. Pobierz ROWS jako COLUMNS (dynamiczne zapytanie PIVOT programu SQL Server)

  5. Jak sprawdzić zgodność skryptów sql z SQL 2008