SQL-Server: Calcular el descuento racional

Siguiendo con la matemática financiera el otro día veíamos cómo calcular el descuento comercial en una consulta de SQL. Ahora vamos con otro tipo de descuento, el descuento racional.

El descuento racional se trata, al igual que el comercial, de una forma de descuento simple, pero tiene principalmente una diferencia con el descuento comercial: Su cálculo se efectúa a partir de la diferencia entre el monto a pagar o valor nominal y su valor actual, por lo que no se toma el valor nominal sino el valor real.Es decir, el descuento racional será igual a la cantidad a pagar menos el valor actual del capital. Es el descuento de su respectivo interés aplicado al valor nominal de un valor, calculado a partir de la tasa de interés nominal vencida o con la tasa de interés efectiva vencida.

La fórmula para obtener el descuento sería la siguiente:

D = ( C0 * d * t ) / (1 + d * t)

Siendo C0 es el capital inicial en el momento t=0, d la tasa de descuento que se aplicará y t el tiempo que dura la inversión. Por ejemplo, para 20000 euros a un 15% anual la fórmula sería:

D=(20000*0.15*1)/(1+0.15*1)

Entonces ¿cómo llevamos esto a una consulta SQL? Supongamos que, como en el ejemplo anterior, tenemos una tabla llamada TablaCreditos con los campos Valor (con el capital inicial en formato money), Descuento (en formato Numeric(5,2)) y Tiempo (en formato int). La consulta sería:

Select (Valor*(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo))/(1.00+(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo)) as DescuentoRacional from TablaCreditos
Anuncios

SQL-Server: Calcular el descuento comercial

La operación financiera de descuento es la inversa a la de capitalización (ya vimos en el pasado la capitalización simple y la compuesta). En este caso se calcula el capital equivalente en un momento anterior de un importe futuro.

Mientras que con la fórmula de la capitalización se calculan unos intereses que se añaden al importe principal, compensando el aplazamiento en el tiempo de su disposición, en las reglas de descuento se hace lo contrario: se calculan los intereses que hay que pagar por adelantar la disposición del capital.

La fórmula para obtener el descuento sería la siguiente:

D= N*d*t

Siendo D el descuento efectuado, N el valor nominal del crédito, d la tasa de descuento y t el tiempo. Por ejemplo, para 20000 euros a un 15% anual la fórmula sería:

D = 20000*0.15*1

Entonces ¿cómo llevamos esto a una consulta SQL? Supongamos que tenemos una tabla llamada TablaCreditos con los campos Valor (con el valor nominal en formato money), Descuento (en formato Numeric(5,2)) y Tiempo (en formato int). La consulta sería:

Select Valor*(Descuento/100.00)*CONVERT(numeric(4,2),Tiempo) as Descuento from TablaCreditos

Métodos del objeto Number en Javascript

El lenguaje Javascript tiene una serie de objetos básicos, que a su vez tienen propiedades y métodos. En próximas entradas iremos viendo distintos objetos, hoy vamos a empezar por los de Number, que tiene básicamente cinco métodos:

  • .toExponential(): Esta función nos devuelve una cadena representando el valor del número con el que trabajamos, pero representado en notación exponencial (también llamada notación científica). Opcionalmente puede recibir un parámetro donde le indiquemos el número de decimales que queremos.
  • .toFixed(): Esta función nos devuelve una cadena representando el valor del número con el que trabajamos, pero redondeando el número de decimales a la cantidad que le digamos. Si no recibe parámetro alguno lo interpretará como un 0 y nos dará un valor entero, si recibe parámetros mostrará tantos decimales como el parámetro indique, rellenando con ceros cuando sea necesario.
  • .toPrecision(): Esta función nos devuelve una cadena representando el valor del número con el que trabajamos, pero redondeado a la longitud que le pasemos como parámetro. Si no se le pasa parámetro alguno entonces devuelve el número entero, si el parámetro es mayor que la longitud del número añadirá un separador decimal seguido de ceros hasta complertar dicha longitud.
  • .toString(): Esta función nos devuelve una cadena representando el valor del número con el que trabajamos. Se le puede pasar como parámetro un valor entre 2 y 36, dicho valor es la base en la que queremos que se formatee el número (por ejemplo 16 para conseguir un resultado hexadecimal, 2 para un resultado binario,etc) .
  • .valueOf(): Esta función nos devuelve el tipo primitivo del objeto Number, es decir, un valor numérico. Es un método que generalmente se usa de forma interna en Javascript y pocas veces se invoca desde el código web.

Baloncesto y estadística: Consulta SQL para calcular el porcentaje de tapones de un jugador

Seguimos con el tema de la estadística baloncestística avanzada. Ya vimos cómo se calcula el PIE,también los porcentajes de tiro avanzado y real y hubo otra entrada sobre estadísticas de asistencias y sobre el porcentaje de robos. Hoy vamos con el porcentaje de robos.

¿Qué nos indica este porcentaje? Pues la cantida de tiros que un jugador tapona, pero teniendo en cuenta los minutos que juega y el ritmo de juego del rival. Es decir, se trata de una estadística “tempo-free”, ya que el número de minutos disputados y el ritmo de juego no afectan al jugador para esto.

¿La fórmula? Es la siguiente:
100*(Tapones*(Minutos de Partido))/(Minutos del jugador*(Tiros intentados por el rival-Triples intentados por el rival))

En una base de datos donde tuviéramos los campos Tapones,MinutosPartido,MinutosJugador, TirplesRival yTirosRival la consulta sería algo así:

Select 100.00*Convert(Numeric(4,2),Tapones)*Convert(Numeric(4,2),MinutosPartido)/Convert(Numeric(4,2),MinutosJugador)*(Convert(Numeric(4,2),TirosRival)-Convert(Numeric(4,2),TriplesRival)) as BlkPcnt

 
¿Qué se le objeta a esta estadística? Los triples: por una parte es muy complicado taponar tiros de tres, por lo que si estos se computaran bajarían mucho el porcentaje de todos los jugadores y por eso los han excluído, pero esto mismo provoca que si un jugador tapona un triple este quede sobrerrepresentado en su estadística: el tapón aparece en el numerador como tapón conseguido pero, a su vez el tiro no está contando en el denomiador al restarse igualmente por ser un triple.

 

 

Baloncesto y estadística: Consulta SQL para calcular el porcentaje de robos de un jugador

Seguimos con el tema de la estadística baloncestística avanzada. Ya vimos cómo se calcula el PIE,también los porcentajes de tiro avanzado y real y hubo otra entrada sobre estadísticas de asistencias. Hoy vamos con el porcentaje de robos.

¿Qué nos indica este porcentaje? Pues la cantida de balones que un jugador recupera, pero teniendo en cuenta los minutos que juega y el ritmo de juego del rival. Aquí es importante matizar ¿qué entendemos por robo? Pues cuando un jugador, por medio de una acción defensiva legal, logra que el rival pierda la posesión del balón ganándola a su vez para su equipo. Es decir, que no cuenta ni cuando se recuperan balones sueltos ni cuando se intercepta el balón cambiando su trayectoria pero sin recuperar la posesión. Ojo, ahora la NBA también recoge eso en sus estadísticas oficiales avanzadas como “Loose ball recoverd” y “Deflections“. Peor lo que ahora nos ocupa es el tema de los robos.

¿La fórmula? Es la siguiente:

100 * Robos del Jugador * Minutos totales de Partido / Minutos jugados por el jugador * Posesiones del equipo rival.

En una base de datos donde tuviéramos los campos Robos,MinutosPartido,MinutosJugador y PosesionesRival la consulta sería algo así

Select 100.00*Convert(Numeric(4,2),Robos)*Convert(Numeric(4,2),MinutosPartido)/Convert(Numeric(4,2),MinutosJugador)*Convert(Numeric(4,2),PosesionesRival) as StealPcnt

¿Limitaciones de esta estadística? Pues que recoge solo el porcentaje de éxitos, al igual que el total de robos, por lo que un jugador puede quedar sobrerrepresentado en la misma, pareciendo mejor defensor de lo que es. Gente como Monta Ellis o, en Europa, Bo McCalebb son jugadores con manos rápidas que por su estilo defensivo consiguen muchos robos pero que en el global no son grandes defensores.

¿Cómo exportar la configuración de Internet Explorer y Ajustes de Internet desde el registro del sistema de Windows?

A veces, ya sea por política de empresa o por el uso de una aplicación web propia, necesitamos una configuración concreta para Internet Explorer en los ajustes de Internet. Y a veces las actualizaciones del sistema nos mandan al guano dicha configuración, obligándonos a conectarnos para volver a configurarlo. Ok, cierto, en caso de tener un controlador de dominio la tarea es más sencilla, pero a veces no podemos tener dicha configuración por lo que sea. Entonces ¿cómo podemos facilitar el trabajo? Pues de una forma muy simple: una vez configurado el navegador exportamos esta configuración desde el registro del sistema.

Ejecutamos el regedit.exe y buscamos la siguiente ruta:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

Hacemos click derecho sobre Internet Settings y en el menú emergente elegimos Exportar, como se ve en la imagen de abajo. Esto generará un fichero de registro de sistema, por lo que si la configuración se modifica bastará con ejecutarlo para recuperar la anterior.

Registro del sistema