sql >> Database teknologi >  >> RDS >> Sqlserver

Beregning af geometrisk forbundne afkast i SQL SERVER 2008

Du har to muligheder for at få et produkt i SQL Server.

1. Simuler ved hjælp af logfiler og eksponenter:

SQL Fiddle

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;

Dette udnytter logfiler og eksponenter til at simulere en produktberegning. Mere info:Brugerdefinerede funktioner .

Det ene problem her er, at det vil mislykkes for afkast <-100%. Hvis du ikke forventer disse, er det fint, ellers bliver du nødt til at indstille alle værdier <100 % til -100 %.

Du kan derefter bruge dette faktiske afkast til at få et årligt afkast efter behov.

2. Definer et tilpasset aggregat med CLR:

Se Bøger online .

Du kan oprette en brugerdefineret CLR-funktion og derefter linke denne til et aggregat til brug i dine forespørgsler. Dette er mere arbejde, og du bliver nødt til at aktivere CLR'er på din server, men når det først er gjort, kan du bruge det så meget som nødvendigt.




  1. Hvordan giver jeg hver registreret bruger deres egen url ved hjælp af PHP?

  2. læseramme med sqlalchemy, mysql og pandaer

  3. json_encode returnerer ikke noget

  4. fjern gamle poster gruppering efter tre kolonner og sortering efter dato