Статьи
Утилиты Telegram YouTube Отзывы

Произведение всех чисел в столбце таблицы одним SQL запросом

3 января 2018

Тэги: PostgreSQL, SQL, головоломки.

Я думаю, каждый знает такую функцию SQL, как SUM(). Она позволяет посчитать сумму всех значений по определённому столбцу. Но что, если нам вдруг понадобится посчитать не сумму, а произведение всех значений?

Как ни странно, функция SUM() нам тоже пригодится. Как нам от произведения перейти к сумме? Вспомним начала матанализа: логарифм произведения равен сумме логарифмов. Будем использовать натуральный логарифм LN() в паре с функцией возведения экспоненты в степень EXP()

Привожу пример для postgresql, но должно работать и в других СУБД:

select exp(sum(ln(field))) from tab

То есть от каждого значения в некотором поле field таблицы tab берётся натуральный логарифм, затем считается сумма этих логарифмов и затем экспонента возводится в степень, равную этой сумме.

Вот так мы от суммы переходим к произведению при помощи одного простого SQL запроса. Не знаю, имеет ли это практический смысл, но может кому-то и пригодится)



Комментарии

30.11.2022 15:13

И тут на вход пришло отрицательное число

11.12.2023 22:13 Никита Вячеславович К.

спасибо, пригодилось

Добавить комментарий

×

devmark.ru