Про продажников
Такая ситуация.
Я подключен к системе сдачи отчетности СБИС, пакетное подключение, несколько компаний.
Пообщался с ПМ, та сказала, что у них есть еще сервис по ведению бухгалтерии, типа может передать менеджеру, чтобы та связалась и попродавала мне бухгалтерию.
Я говорю - ок, пусть свяжется.
Поступает звонок. Мне в общих чертах рассказывают про сервис, цены и проч.
Я задаю вопрос - у нас уже есть подключение к 1С, если мы перейдем к вам, то какие будут плюсы, преимущества?
И менеджер, лол, не смогла мне сказать ничего внятного - только то, что они облачные и доступны с любого устройства (1С у меня тоже облачное).
Вот это называется - хреновый продажник.
А спорим, вы не знали...
Что в Венеции почту и продукты до сих пор доставляют по воде. Курьеры используют маленькие лодки с моторами — и да, у них даже бывают водные пробки. А тут пробок нет.
AVG. Почему "среднее" не всегда среднее
Когда мы видим AVG, кажется, всё просто:
Возьми все значения и найди среднее арифметическое.
Но на практике AVG часто ведёт себя не так, как ты ожидаешь — и это причина десятков аналитических факапов в отчётах.
А пока подписывайся на мой каналНа связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!
Что делает AVG()?
AVG() - агрегатная функция. Она считает среднее значение по всем строкам, которые попали в выборку после фильтрации WHERE
SELECT AVG(column_name)
FROM table_name
WHERE condition;
Пример:
| id | salary |
| -- | ------ |
| 1 | 1000 |
| 2 | 2000 |
| 3 | NULL |
| 4 | 3000 |
SELECT AVG(salary) FROM employees;
Результат → 2000
❗ Почему не (1000 + 2000 + 0 + 3000) / 4 = 1500?
Потому что AVG игнорирует NULL.
Он считает (1000 + 2000 + 3000) / 3.
Если тебе нужно учесть “отсутствие зарплаты” как ноль —
надо явно это сказать базе:
SELECT AVG(COALESCE(salary, 0)) FROM employees;
Где используется AVG
AVG() — базовый инструмент в аналитике:
📈 средний чек (AVG(order_amount))
💰 средняя зарплата по отделу
🕒 среднее время выполнения заказа
⭐ средний рейтинг продукта
Но это только верхушка айсберга.
Ниже — интересные кейсы, где AVG используется неочевидно, но мощно 👇
Обычный AVG считает всё одинаково,
но в реальном мире “вес” данных может быть разный.
Пример — средняя оценка курса:
| user_id | rating | reviews |
| ------- | ------ | ------- |
| 1 | 5 | 1 |
| 2 | 4 | 20 |
Если ты просто возьмёшь AVG(rating) → 4.5
Но по факту второй пользователь оставил 20 отзывов, его мнение должно весить больше:
SELECT SUM(rating * reviews) / SUM(reviews) AS weighted_avg
FROM ratings;
Вот это уже взвешенное среднее, и результат будет ближе к 4.
AVG не коммутативен в агрегациях
AVG(AVG(...)) ≠ AVG(...)
Пример:
| group | value |
| ----- | ----- |
| A | 10 |
| A | 20 |
| B | 100 |
| B | 100 |
| B | 100 |
SELECT AVG(avg_val) FROM (
SELECT group, AVG(value) AS avg_val
FROM t GROUP BY group
) s;
Результат будет → 57.5
А реальное среднее по всей таблице = 86.
Почему?
Потому что при втором AVG каждая группа имеет одинаковый “вес”,
а не количество строк. Это типичный аналитический капкан.
AVG в окнах (window functions)
AVG() можно использовать по “скользящему окну”, чтобы считать динамику:
SELECT
date,
AVG(price) OVER (ORDER BY date ROWS 6 PRECEDING) AS moving_avg_7d
FROM stock_prices;
👉 Это 7-дневное скользящее среднее — классика анализа временных рядов, трейдинга и предсказания трендов.
Среднее как критерий “нормальности”
В аналитике AVG часто используют вместе со STDDEV:
STDDEV (Standard Deviation) — стандартное отклонение (среднеквадратичное отклонение). Это статистическая мера разброса данных относительно их среднего значения в определённом периоде.
SELECT *
FROM purchases
WHERE amount > AVG(amount) + 3 * STDDEV(amount);
Так находят аномально большие значения — подозрительные платежи, мошеннические операции и т.д.
AVG по датам — это тоже работает
Мало кто знает, что AVG() можно применять даже к датам:
SELECT AVG(order_date)::date FROM orders;
PostgreSQL переведёт даты во внутренние числа и вычислит “среднюю дату” —
по сути, середину временного диапазона.
Это удобно, если хочешь понять, когда чаще всего происходили события.
AVG и производительность
AVG() всегда вычисляется через SUM и COUNT,
поэтому если ты делаешь:
SELECT COUNT(*), SUM(amount), AVG(amount)
— оптимизатор посчитает всё за один проход по данным.
Но если AVG в отдельном запросе — будет второй проход.
Мелочь, а при миллионах строк чувствуется.
Мой канал На связи: SQL ждет тебя, если ты тоже хочешь познакомиться с базовым языком для аналитики данных.
Подписывайся!
Группа «Т-Технологии» раскрывает операционные результаты за август 2025 г
🔹Количество активных пользователей экосистемы Т увеличилось на 9% год к году и составило 33,7 млн.
🔹Общий объем покупок клиентов Т за январь-август 2025 г. вырос на 16% год к году и составил более 6,4 трлн руб.
🔹Кредитный портфель превысил 3 трлн руб., увеличившись на 0,9% за месяц и на 15,5% с начала года.
🔹Объем средств клиентов и активов под управлением на счетах клиентов превысил 5,9 трлн руб., увеличившись на 11% с начала года.
👉Операционные показатели и финансовые метрики рассчитаны по внутренней методологии и не полностью отражают результаты работы всей Группы. Консолидированная отчетность Группы по МСФО за III квартал 2025 г. будет раскрыта в ноябре 2025 г.
Обратите внимание, я выкладываю свои посты на разных площадках, потому рекомендую подписаться на мой тг канал, где они все есть в одном потоке. Там я делюсь информацией в онлайн-режиме.
PG_HAZEL : Сводный отчет по результатам нагрузочного тестирования СУБД PostgreSQL
Взято с основного технического канала Postgres DBA (возможны правки в исходной статье).
Сервисный скрипт для генерации исходных данных для формирования отчетов по результатам нагрузочного тестирования
stress_report.sh 'device-list'
'device-list' : список устройств . Например 'vdb vdc'.
Результат:
Текстовые файлы для последующего импорта в Excel .
1. Операционная скорость
Продолжение и подробности : PG_HAZEL : Сводный отчет по результатам нагрузочного тестирования СУБД PostgreSQL




