Статьи
YouTube-канал

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

3 января 2018

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

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

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

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

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

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

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


Облако тэгов

Kotlin, Java, Java 16, Java 11, Java 10, Java 9, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.

Последние статьи


Комментарии

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

×

devmark.ru