В этом руководстве вы узнаете, как использовать функцию SQL Server LOG() для вычисления натурального логарифма числа.
Введение в функцию SQL Server LOG()
Натуральный логарифм — это логарифм по основанию e, где e приблизительно равно 2,718. В SQL-сервере вы можете использовать функцию LOG() для вычисления натурального логарифма указанного числа.
Вот синтаксис функции LOG():
LOG(n [, base])
В этом синтаксисе:
- n — число с плавающей точкой или значение, которое может быть неявно преобразовано в число с плавающей точкой.
- base указывает основание логарифма. Это необязательно и по умолчанию равно e.
Функция возвращает NULL, если n или base равны NULL.
Примеры функций SQL Server LOG()
Давайте рассмотрим несколько примеров использования функции LOG().
1) Примеры базовых функций SQL Server LOG()
В следующем примере функция LOG() используется для вычисления натурального логарифма числа 1:
SELECT LOG(1);
Выход:
result ------ 0 (1 row affected)
В следующем операторе функция LOG() используется для вычисления натурального логарифма числа e:
SELECT LOG(EXP(1)) result;
Выход:
result ------- 1
В следующем примере вычисляется натуральный логарифм числа 10:
SELECT LOG(10) result;
Выход:
result ---------------- 2.30258509299405
В следующем примере функция LOG() используется для вычисления логарифма 8 по основанию 3:
SELECT LOG(8,2) result;
Выход:
result ------ 3
2) Использование функции LOG() для расчета сложных процентов
Предположим, у вас есть начальное значение P, годовая процентная ставка составляет r% в год, через n лет вы получите сумму F.
- Через год вы получите F = P(1 + r)
- Через два года вы получите F = P(1+ r)(1+r) = P(1+ r)2
- Через n лет вы получите F = P(1 + r)n
Если у вас есть 1000 долларов США, годовая процентная ставка составит 5%, а если вы хотите получить 2000, вам придется ждать n лет, где n равно: n = log(F/P) / log(1 +r) = log(1,5)/log(1,05) ~ 8,31 года.
В SQL-сервере для этого можно использовать функцию LOG:
DECLARE @p decimal = 1000; DECLARE @f decimal = 1500; DECLARE @r decimal = 5; DECLARE @n decimal(5,2); SET @n = LOG(@f/@p)/ LOG(1 + @r/100); SELECT @n years;
Выход:
years ------ 8.31
3) Использование функции LOG() с табличными данными
Сначала создайте новую таблицу под названием «Инвестиции» для хранения текущей стоимости, будущей стоимости и средней годовой процентной ставки:
CREATE TABLE investments( id INT IDENTITY PRIMARY KEY, present_value DECIMAL(19, 2) NOT NULL, future_value DECIMAL(19, 2) NOT NULL, annual_interest_rate DECIMAL(19, 2) NOT NULL );
Во-вторых, вставьте несколько строк в таблицу инвестиций:
INSERT INTO investments(present_value, future_value, annual_interest_rate) VALUES (1000, 1500, 0.05), (2000, 5000, 0.06), (5000, 10000, 0.1);
В-третьих, извлеките данные из таблицы инвестиций:
SELECT * FROM investments;
Наконец, рассчитайте количество лет, которое потребуется, чтобы получить будущую стоимость из текущей стоимости и годовой процентной ставки:
SELECT id, present_value, future_value, annual_interest_rate, CAST( ROUND( LOG(future_value / present_value) / LOG(1 + annual_interest_rate), 2 ) AS DEC(5, 2) ) years FROM investments;
Выход:
id | present_value | future_value | annual_interest_rate | years ---+---------------+--------------+----------------------+------- 1 | 1000.00 | 1500.00 | 0.05 | 8.31 2 | 2000.00 | 5000.00 | 0.06 | 15.73 3 | 5000.00 | 10000.00 | 0.10 | 7.27 (3 rows)
Краткое содержание
- Используйте функцию LOG() для вычисления натурального логарифма числа.