TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.26K subscribers
Post #97 1.34K
🗒 Как посчитать произведение в SQL, если есть только SUM — разберем задачу с собеседования:

Иногда на собеседовании спрашивают:
"Вот у тебя есть таблица транзакций за день. Для каждого дня посчитай произведение значений. Что будешь делать?"

Это решается чисто через математику и стандартные агрегаты. Сейчас разберёмся по шагам.

Представим таблицу transactions:
| tx_date    | value |
|------------|-------|
| 2025-10-01 | 2 |
| 2025-10-01 | 3 |
| 2025-10-01 | 5 |
| 2025-10-02 | 4 |
| 2025-10-02 | 2 |


Задача: для каждого дня посчитать произведение всех value.
То есть:
• для 2025-10-01 должно получиться 2⋅3⋅5=30
• для 2025-10-02 должно получиться 4⋅2=8
Как из суммы сделать произведение? 🧠

Вспоминаем школьную математику:
• log(a⋅b)=log(a)+log(b)

Переводя на человеческий язык, чтобы получить произведение, можно:
• взять логарифм каждого числа
• сложить
• применить экспоненту и получить итоговый результат

Решение в SQL 🔵
SELECT
tx_date,
EXP(SUM(LN(value))) AS product_value
FROM transactions
GROUP BY tx_date
ORDER BY tx_date;


Что тут происходит:
• LN(value) — считаем натуральный логарифм каждого значения.
• SUM(LN(value)) — агрегируем по дню.
• EXP(...) — возвращаемся из логарифмического мира к исходному числу.
В итоге получаем то самое произведение.

Важные нюансы, о которых любят спрашивать 🧐
1️⃣Нули:
• Если есть хотя бы один 0, то произведение за день должно быть 0.
• Но ln(0) не существует — будет ошибка.
• Как обойти:
— либо заранее проверять наличие нулей
— либо аккуратно обрабатывать условием

2️⃣Отрицательные значения:
• ln(x) определён только для x>0.
• Если в данных возможны отрицательные значения — задача усложняется:
— нужно отдельно считать знак (чётность количества отрицательных)
— логарифм брать от модуля
— восстанавливать знак в конце.
• На собеседованиях чаще всего ожидают решение для положительных чисел и аккуратную оговорку про этот кейс — если вы про него скажете, это плюс.

Итог:
Такое решение показывает на собеседовании не только знание SQL, но и умение опираться на математику и аккуратно думать про крайние случаи — нули и отрицательные значения.

🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)

❓ Сталкивались с задачами на "продвинутые" агрегаты в SQL (медиана, произведение, перцентили)? Пишите в комментариях, что вызывало сложности — постараюсь разобрать в следующих постах.
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

Сделал сайт - оцените:
🚬 Вопросы, обучение, консультации

@dima_sqlit
  • 🔥 23
  • 🐳 9
  • ❤‍🔥 2
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →