Вы когда-нибудь замечали, что в новой теме, будь то Математика, Языки программирования и т.п. всё кажется хаосом, пока не разберётесь с базовыми понятиями? Есть крутая теория, которая говорит: если сначала выучить ключевые термины в предметной области, то освоение пойдёт в разы быстрее. Это не просто слова — это подкреплено когнитивными подходами, такими как Cognitive Learning Theory и Fast Mapping.
• Eng – A>>>M: Acid, API, Airflow, A/B-tests, BI, BigQuery, ClickHouse, Confluence, DWH, Docker, Excel, ETL, Figma, Git, Hadoop и многое другое.
• Eng – N>>>Z: NoSQL, OLAP/OLTP, Pandas, Plotly, PostgreSQL, Redash, SQL, Spark, Tableau, UML, VBA, XML, Yandex Metrika.
• Рус – А>>>М: Анализ, Агрегация, Визуализация, Гипотезы, Дашборды, Инсайт, Кластеризация, Линейная регрессия, Модели.
• Рус – Н>>>Я: Нормализация, Оптимизация, Панели, Ритейл, Статистика, Телеком, Управление данными, Хранилище, Яндекс Директ.
• Плюс разделы по метрикам – (финансовые, маркетинговые, продуктовые), базам данных, моделям.
Итог:
Ссылка на курс - Аналитик данных: подготовка к собеседованию
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Stepik: online education
Аналитик данных: подготовка к собеседованию
Курс для аналитика данных, построенный на терминах из реальных, свежих вакансий. Применение Python: проведён исследовательский анализ данных, построена гистограмма, выделены главные термины из таких областей, как аналитика + маркетинг, визуализация, финансы…
❤🔥29🔥14🦄9
Коррелированные подзапросы — это подзапросы, которые зависят от основного запроса. Они ссылаются на данные из внешней части и выполняются для каждой строки основного запроса. Звучит сложно? На самом деле, это как если подзапрос "спрашивает" у основной таблицы: "Эй, для этой строки дай мне нужное значение!". Давайте разберём на простом примере.
Таблица: employees
id | name | department | salary
1 Ваня IT 50000
2 Таня IT 60000
3 Петя Sales 40000
4 Саша Sales 55000
5 Маша HR 45000
6 Коля IT 70000
SELECT
id,
name,
department,
salary
FROM
employees as e
WHERE
salary > (SELECT AVG(salary) FROM employees WHERE department = e.department);
• Для каждой строки e подзапрос берёт её department (например, IT для Вани) и считает среднюю зарплату только по этому отделу ((50000 + 60000 + 70000)/3 = 60000). Если salary строки > этой средней — она попадет в результат.
Итог:
Коррелированные подзапросы — для случаев, когда нужно "персонализированное" вычисление по строке, как сравнение со средней в группе. Выбирайте их, когда join усложняет запрос и данных в таблице не много.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥19❤🔥6🐳4🗿1
Многие путают CTE (Common Table Expressions) и представления (VIEW), потому что оба позволяют создавать "временные таблички" из запросов. Но под капотом они работают по-разному: CTE — для одного запроса, а представления — как сохранённые ярлыки. Давайте разберёмся на простых примерах.
Представим что у нас в базе данных есть таблица sales (продажи в магазине:
id | user_id | product | amount | date
1 | 101 | Кофе | 500 | 2025-01-15
2 | 102 | Чай | 300 | 2025-01-16
3 | 101 | Печенье | 200 | 2025-01-17
4 | 103 | Кофе | 500 | 2025-01-18
Представление — это просто сохранённый SQL-запрос, который выглядит и работает как обычная таблица. Оно не хранит данные физически — каждый раз при обращении запрос выполняется заново, показывая свежие данные. Есть два типа: постоянные (живут пока не удалишь) и временные (исчезают с закрытием сеанса).
Сеанс — это период времени от подключения к базе данных до отключения от неё. Представьте: вы открываете DBeaver или другой SQL-клиент, подключаетесь к серверу — начинается сеанс. Вы выполняете запросы, создаёте временные объекты. Закрываете программу, отваливается соединение или истекает таймаут — сеанс заканчивается.
Пример постоянного представления:
-- Создаём постоянное VIEW
CREATE VIEW user_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Используем как таблицу
SELECT * FROM user_summary WHERE total_spent > 400; -- ✅ Работает даже через неделю
Пример временного представления:
-- Создаём временное VIEW
CREATE TEMP VIEW temp_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Работает в текущем сеансе
SELECT * FROM temp_summary; -- ✅
-- Новый сеанс (закрыли/открыли клиент) — исчезло
SELECT * FROM temp_summary; -- ❌ Ошибка!
CTE — это обобщённое табличное выражение, временный результат запроса, который существует только в рамках одного SQL-запроса. Оно определяется с помощью WITH и исчезает сразу после выполнения. CTE удобно для разбиения сложных запросов на части, улучшая читаемость.
Простой пример CTE:
-- CTE для расчёта сумм по пользователям
WITH user_totals AS (
SELECT user_id, SUM(amount) as total_spent
FROM sales GROUP BY user_id
)
SELECT * FROM user_totals WHERE total_spent > 500; -- ✅ Работает в этом запросе
-- В следующем запросе CTE уже нет
SELECT * FROM user_totals; -- ❌ Ошибка!
• Область видимости: CTE — только в одном запросе, представления — в сеансе (временные) или постоянно.
• Создание: CTE с WITH внутри запроса, представления с CREATE VIEW или CREATE TEMP VIEW.
Итог:
CTE и VIEW — это похожие инструменты, только с разным "сроком хранения". CTE — для быстрых фишек внутри одного запроса, типа "собрал данные на лету и сразу использовал". А представления — как готовые шаблоны, которые можно дёргать когда угодно, чтобы не писать одно и то же по сто раз.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
❤🔥26🔥14 8
А вы знали, что не все аналитики в IT ежедневно пишут SQL-запросы — для некоторых это редкий гость? 🤩
Я слышал краем уха о системных аналитиках, но толком не вникал, пока не наткнулся на канал Системный анализ на максималках от Сергея, старшего системного аналитика в UmbrellaIT, который делится своим путем и карьерным развитием простым и увлекательным языком
Сергей рассказывает о своей работе так живо и доступно, что я проникся — наконец-то разобрался, чем они занимаются: берут идеи и пожелания от бизнеса, переводят их в понятные инструкции для программистов, создают схемы, как всё должно работать. Его посты как личный блог: от технарьских разборов до историй из жизни, обзоров книг и советов по росту. Вот несколько примеров, которые меня зацепили и помогли разобраться в теме:
🔜 Нужно ли СА знать программирование? + Краткий анализ рынка
🔜 Шаблоны документации – пустая трата времени или действительно полезно?
🔜 Промт для генерации User Story и Use Case
🔜 Фронт раньше бэка – это вообще законно?
🔜 Что такое Polling и причем тут Шрек
А еще Сергей рассказывает о своих намерениях дорасти до архитектора и делится планом по достижению цели:
🔜 Путь до архитектора (части 1-3)
Частая проблема в IT это выгорание и про это Сергей тоже написал, советую ознакомиться очень полезно:
🔜 Почему я впервые отдохнул только в 26 лет
🔜 Лучшее лекарство от стресса – спорт
Рекомендую подписаться🏖 и ознакомиться, может быть СА это именно ваше направление?
А вы сталкивались с системными аналитиками в работе? Делитесь в комментариях, используете ли их подходы в своей аналитике!
Я слышал краем уха о системных аналитиках, но толком не вникал, пока не наткнулся на канал Системный анализ на максималках от Сергея, старшего системного аналитика в UmbrellaIT, который делится своим путем и карьерным развитием простым и увлекательным языком
Сергей рассказывает о своей работе так живо и доступно, что я проникся — наконец-то разобрался, чем они занимаются: берут идеи и пожелания от бизнеса, переводят их в понятные инструкции для программистов, создают схемы, как всё должно работать. Его посты как личный блог: от технарьских разборов до историй из жизни, обзоров книг и советов по росту. Вот несколько примеров, которые меня зацепили и помогли разобраться в теме:
А еще Сергей рассказывает о своих намерениях дорасти до архитектора и делится планом по достижению цели:
Частая проблема в IT это выгорание и про это Сергей тоже написал, советую ознакомиться очень полезно:
Рекомендую подписаться
А вы сталкивались с системными аналитиками в работе? Делитесь в комментариях, используете ли их подходы в своей аналитике!
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Системный анализ на максималках
Ведущий системный аналитик 🅰️ | IT Ментор
Пишу про IT: личный опыт, хард-скиллы, карьерные байки и полезные находки
Менторство/другие вопросы: @bening_cloth, подробнее https://sergey-saprykin-sa.yonote.ru/share/ssa
Пишу про IT: личный опыт, хард-скиллы, карьерные байки и полезные находки
Менторство/другие вопросы: @bening_cloth, подробнее https://sergey-saprykin-sa.yonote.ru/share/ssa
🔥5 4🐳3
🔥 GitHub Copilot Pro за 400 рублей: доступ к GPT-5 mini с unlimited запросами для IT, аналитики, разработки и повседневной жизни:
Если вы работаете в IT — будь то программирование, аналитика данных, системное администрирование или другие направления — GitHub Copilot Pro может стать вашим суперпомощником. Сегодня разберём, как купить подписку дёшево, что она даёт и почему это выгодно для повседневных задач. Я расскажу на простых примерах, чтобы было понятно даже тем, кто только начинает.
1️⃣ Цены на подписку:
400 рублей за месяц или 830 за три месяца (купить можно на plati market):
• 1 месяц за 400 рублей — отлично для теста, чтобы понять, как инструмент вписывается в ваш workflow
• 3 месяца за 830 рублей — выгоднее в долгосрочной перспективе, около 277 рублей в месяц
2️⃣ Что позволяет подписка:
• Доступ к GPT-5 mini с unlimited запросами — генерируйте код, SQL-запросы, аналитику и т.д. сколько угодно, без ограничений.
• Copilot Pro интегрирует мощный ИИ в вашу среду разработки (VS Code)
• Всего 300 премиум-запросов в месяц на топовые модели (claude, gemini, gpt), но для рутинных задач mini-версии более чем достаточно.
• Одна из ключевых фич — автодополнение кода в реальном времени: пока вы печатаете, ИИ предлагает готовые строки или блоки кода, которые идеально вписываются в ваш стиль.
• Ещё круче — понимание контекста проекта: ИИ анализирует все файлы, структуру кода и зависимости, чтобы давать персонализированные предложения. Не просто общий ответ, а такой, который учитывает вашу библиотеку (например, Pandas для аналитики) или настройки (типа Airflow для задач).
Важно сказать, что для работы требуется VPN
3️⃣ Если вам интересна тема ИИ, можете посмотреть предыдущие посты на эту ему:
• Бесплатные нейросети для аналитики и кода
• Вайбкодинг — бесплатный аналог Cursor AI от Alibaba (Qoder)
• Бесплатная нейросеть от Google для работы с любыми материалами — NotebookLM
• Как за 400 рублей в год получить доступ к Claude, ChatGPT, Gemini и Grok через Perplexity и без использования VPN
Итог:
GitHub Copilot Pro — универсальный инструмент для IT-специалистов (и не только), ускоряющий задачи в программировании, аналитике и за её пределами.
🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️ Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ Пробовали GitHub Copilot Pro как чат или для кодинга? Делитесь в комментариях, помогает ли автодополнение в ваших задачах или предпочитаете другие ИИ?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.
@dima_sqlit
Если вы работаете в IT — будь то программирование, аналитика данных, системное администрирование или другие направления — GitHub Copilot Pro может стать вашим суперпомощником. Сегодня разберём, как купить подписку дёшево, что она даёт и почему это выгодно для повседневных задач. Я расскажу на простых примерах, чтобы было понятно даже тем, кто только начинает.
400 рублей за месяц или 830 за три месяца (купить можно на plati market):
• 1 месяц за 400 рублей — отлично для теста, чтобы понять, как инструмент вписывается в ваш workflow
• 3 месяца за 830 рублей — выгоднее в долгосрочной перспективе, около 277 рублей в месяц
• Доступ к GPT-5 mini с unlimited запросами — генерируйте код, SQL-запросы, аналитику и т.д. сколько угодно, без ограничений.
• Copilot Pro интегрирует мощный ИИ в вашу среду разработки (VS Code)
• Всего 300 премиум-запросов в месяц на топовые модели (claude, gemini, gpt), но для рутинных задач mini-версии более чем достаточно.
• Одна из ключевых фич — автодополнение кода в реальном времени: пока вы печатаете, ИИ предлагает готовые строки или блоки кода, которые идеально вписываются в ваш стиль.
• Ещё круче — понимание контекста проекта: ИИ анализирует все файлы, структуру кода и зависимости, чтобы давать персонализированные предложения. Не просто общий ответ, а такой, который учитывает вашу библиотеку (например, Pandas для аналитики) или настройки (типа Airflow для задач).
Важно сказать, что для работы требуется VPN
• Бесплатные нейросети для аналитики и кода
• Вайбкодинг — бесплатный аналог Cursor AI от Alibaba (Qoder)
• Бесплатная нейросеть от Google для работы с любыми материалами — NotebookLM
• Как за 400 рублей в год получить доступ к Claude, ChatGPT, Gemini и Grok через Perplexity и без использования VPN
Итог:
GitHub Copilot Pro — универсальный инструмент для IT-специалистов (и не только), ускоряющий задачи в программировании, аналитике и за её пределами.
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12 6 6
Продолжаем разбираться с временными конструкциями в SQL.
Первую часть можно посмотреть вот здесь
Многие путают временные таблицы (TEMP TABLE) и материализованные представления (MATERIALIZED VIEW), потому что оба хранят данные физически. Но временные таблицы — для сеанса, а материализованные — как кэш с обновлениями. Давайте разберём их работу на таблице sales из первой части.
Представим, что у нас в базе данных есть таблица sales (продажи в магазине):
id | user_id | product | amount | date
1 | 101 | Кофе | 500 | 2025-01-15
2 | 102 | Чай | 300 | 2025-01-16
3 | 101 | Печенье | 200 | 2025-01-17
4 | 103 | Кофе | 500 | 2025-01-18
Временная таблица — это реальная таблица, которая создаётся на время сеанса и хранит данные физически. Она исчезает автоматически при закрытии сеанса (что такое сеанс описано в первой части). Полезна для промежуточных расчётов с большими данными.
Пример временной таблицы:
-- Создаём временную таблицу
CREATE TEMP TABLE temp_sales AS
SELECT * FROM sales WHERE amount > 300;
-- Используем в сеансе
SELECT user_id, SUM(amount) FROM temp_sales GROUP BY user_id; -- ✅ Работает
-- Новый сеанс — исчезла
SELECT * FROM temp_sales; -- ❌ Ошибка!
Материализованное представление — это VIEW, которое хранит данные физически, как таблица, но обновляется по расписанию или вручную. В отличие от обычного VIEW, оно не пересчитывается каждый раз — данные "заморожены" до обновления. Полезно для тяжёлых отчётов.
Пример материализованного VIEW (в PostgreSQL, например):
-- Создаём материализованное VIEW
CREATE MATERIALIZED VIEW mat_user_summary AS
SELECT user_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM sales GROUP BY user_id;
-- Используем как таблицу
SELECT * FROM mat_user_summary WHERE total_spent > 400; -- ✅ Быстро, данные из кэша
-- Обновляем данные
REFRESH MATERIALIZED VIEW mat_user_summary; -- Пересчитывает
• Хранение: Оба физически, но временные — только в сеансе, материализованные — постоянно, с обновлениями.
• Создание: TEMP TABLE для сеанса, MATERIALIZED VIEW для долгосрочного кэша.
• Обновление: Временные таблицы не обновляются автоматически (данные статичны после создания; для изменений нужно вручную обновлять их содержимое, например, через INSERT/UPDATE). Материализованные — вручную по команде (REFRESH) или через триггеры/расписания в некоторых СУБД.
Итог:
Временные таблицы — для быстрых расчётов в одном сеансе, а материализованные VIEW — для ускорения частых запросов с редкими обновлениями. Не путайте с обычными VIEW!
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
❤🔥13 6 4🐳3
Райан Гослинг нашел канал в котором автор делится, как он вкатился в IT после 30 лет в Аналитику данных
В Бегущем по лезвию данных вы найдете:
🔤 Что делать, если к 30 высох мозг?
🔤 Как гарантировано ничего не выучить?
🔤 Еще один список бесплатных курсов, чтобы никогда их не пройти
🔤 Как запустить Jupyter в смартфоне и зачем оно вам надо?
🔤 Где поюзать предка Excel, чтобы почувствать себя олдом?
🔤 Как импортировать датафрейм из буфера обмена?
Подпишись на @data_dg, если тоже хочешь пробежаться по лезвию данных.
В Бегущем по лезвию данных вы найдете:
Подпишись на @data_dg, если тоже хочешь пробежаться по лезвию данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥4 3
Многие новички (и не только) в Python сталкиваются с длинными циклами — например, при обработке больших данных или вычислениях.
Возникает вопрос — завис ли процесс? Можно, конечно, проставлять print с номером итерации, но это примитивно и неудобно.
Есть крутое решение — библиотека tqdm, которая добавляет стильный прогресс-бар.
Представим, что у нас есть список из 100 элементов, и мы хотим мониторить цикл for.
import time # Для имитации задержки
items = range(100) # 100 элементов
for i in items:
print(f"Обработка элемента {i}") # Выводит номер каждый раз
time.sleep(0.1) # Имитация работы
Это базовый вариант — вставляем print внутри цикла, чтобы видеть, на каком шаге мы. Полезно для отладки, но консоль быстро замусоривается, и нет информации о времени или скорости.
import time # Для имитации задержки
from tqdm import tqdm # Импортируем tqdm
items = range(100) # 100 элементов
for item in tqdm(items, desc="Обработка элементов"):
time.sleep(0.1) # Имитация работы (0.1 секунды на итерацию)
print("Цикл завершён!")
Tqdm — это лёгкая библиотека, которая оборачивает ваш цикл в прогресс-бар с процентами, скоростью (итераций в секунду) и временем до завершения.
Устанавливается просто:
pip install tqdm
Обработка элементов: 42%|████▏ | 42/100 [00:04<00:06, 9.50it/s]
Итог:
Если цикл короткий — хватит print. Но для серьёзных задач используйте tqdm.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥17❤🔥7 6
Аналитики часто сталкиваются с задачей — нужно быстро скопировать данные из DataFrame в Excel или наоборот, без лишних сохранений в файлы. Pandas предлагает удобные инструменты для работы с буфером обмена:
1. Вставка из буфера обмена (загрузка данных):
df = pd.read_clipboard() # создаем DataFrame из скопированных данных
Работает с таблицами из Excel, браузера и других источников.
2. Копирование в буфер обмен (выгрузка данных):
df.to_clipboard() # копируем DataFrame в буфер обмена
Теперь данные можно вставить в Excel или другую программу обычным Ctrl+V.
Я работаю в jupyter notebook на удаленном сервере и я встретился с ошибкой:
Pyperclip could not find a copy/paste mechanism for your system.....
И что теперь делать ? Можно конечно установить Pyperclip к себе в систему на удаленном сервере, но для этого, как правило нужны права супер пользователя (sudo), а мы работаем в большой компании и нам никто не даст этого сделать. Я нашел выход (смотрим пункт 3).
3. Копирование в буфер обмен на удаленном сервере (выгрузка данных):
Установим библиотеку copydf
pip install copydf
Импортируем функцию copyDF и в качестве аргумента дадим ей на вход наш Pandas DataFrame:
from copydf import copyDF
copyDF(df)
Готово — теперь данные можно вставить в Excel или другую программу обычным Ctrl+V.
Итог:
Pandas clipboard — удобная штука для локальной работы, но на серверах можно встретиться с проблемами.
copydf решает проблему без прав и лишних заморочек
Попробуйте — и забудьте о файлах!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥21❤🔥7 4 2 1
Работая с ClickHouse, часто сталкиваешься с ситуацией: тебе дали список из десятков тысяч user_id или сотен городов, и нужно отфильтровать данные по ним. Но часто возникают проблемы следующего характера:
• Устанавливаем библиотеку (если ещё не стоит):
pip install clickhouse-connect pandas
• Импортируем нужное:
import clickhouse_connect
import pandas as pd
from clickhouse_connect.driver.external import ExternalData
• Подключаемся к ClickHouse (настройки у всех разные, но вот пример подключения):
def get_click_dl_client():
client = clickhouse_connect.get_client(
host='host',
port=8443,
username='your_login',
password='your_password',
secure=True,
verify=False,
send_receive_timeout=6000000
)
return client
client = get_click_dl_client()
1) users.csv — содержит user_id (int) и флаг actual (String: «да»/«нет»)
2) city.xlsx — список городов в колонке city (String)
Нам нужно отобрать user_id только с actual = 'да' и только из указанных городов.
• Загружаем данные через ExternalData
Создаём объект — он будет "контейнером" для наших временных таблиц:
ext_data = ExternalData()
• Вариант 1: Прямая загрузка из CSV-файла
ext_data.add_file(
file_name='user_table_tmp', # имя таблицы в SQL-запросе
fmt='CSVWithNames', # Формат с именами столбцов в первой строке (если без имён — используйте 'CSV')
structure=['user_id Int32', 'actual String'], # Структура - типы полей
data=open('users.csv', 'rb').read() # путь к файлу (строка!)
)
• Вариант 2: Загрузка из Pandas DataFrame (из Excel):
city_df = pd.read_excel('city.xlsx') # Читаем Excel в DataFrame
ext_data.add_file(
file_name='city_table_tmp', # имя таблицы в SQL-запросе
fmt='CSVWithNames', # С именами столбцов
structure=['city String'], # Структура - типы полей
data=city_df.to_csv(index=False).encode('utf-8') # Конвертируем DF в CSV-строку и в байты для передачи
)Здесь .to_csv() превращает DataFrame в CSV-строку, а .encode('utf-8') — в байты для ExternalData.
• Теперь используем в запросе — без прав на создание таблиц в БД!
q = '''
SELECT
user_id,
SUM(money_spend) AS total_spend
FROM events
WHERE
1=1
AND user_id IN (SELECT user_id FROM user_table_tmp WHERE actual='да')
AND city IN (SELECT city FROM city_table_tmp)
GROUP BY 1
'''
df_total_spend = client.query_df(q, external_data=ext_data) # Выполняем с внешними данными
Итог:
ExternalData — супер-способ обойти отсутствие прав на temp tables в ClickHouse. Загружайте из файлов или DataFrame и джойньте/фильтруйте на здоровье!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Дима SQL-ит 🧑💻 (Аналитика данных)
Проголосуйте за канал, чтобы он получил больше возможностей.
🔥17❤🔥6 4🐳3 1
Обновлённая модель, заточенная под кодинг, создание агентов и сложные вычисления. По бенчмаркам, она лидирует в некоторых задачах, обходя GPT-5 и Gemini 2.5 Pro. По моему личному опыту эта моделька лучше всего отвечает на мои запросы ну и еще Grok, как по мне хорош.
Хочу в ближайшие дни протестировать ее и написать проекты. Интересно ваше мнение, какие модельки вы используете и могут ли они уже помочь написать полноценный проект?
Не хочу перегружать вас бенчмарками и прочими умными словами, просто интересно ваше мнение, хотели бы такие посты, где я бы оповещал вас о новых инструментах, как в ИИ, так и в целом мире IT, что думаете?
попробовать можно здесь
Итог:
Модель выглядит многообещающей для нашей работы с данными — быстрее, умнее в кодинге и с лучшей поддержкой инструментов. Буду разбираться!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Anthropic
Introducing Claude Sonnet 4.5
Claude Sonnet 4.5 is the best coding model in the world, strongest model for building complex agents, and best model at using computers.
🔥5❤🔥3 2
Аналитики часто сталкиваются с ситуациями, когда SQL-запросы дают неожиданные результаты — таблицы не джойнятся, функции не работают или сравнения ломаются. Всё это из-за несоответствия типов данных полей: строка не склеивается с числом, дата не сравнивается с текстом. Особенно это актуально для JOIN, где типы должны идеально совпадать. Давайте разберём на простых примерах, почему типы данных — это основа стабильных запросов, и как с этим работать.
Представим две таблицы в базе: orders (заказы) и customers (клиенты).
Вот их структура с данными:
Таблица orders:
| id (INT) | customer_id (VARCHAR) | amount (DECIMAL) | order_date (DATE) |
|----------|-----------------------|------------------|-------------------|
| 1 | '101' | 500.00 | 2025-10-01 |
| 2 | '102' | 300.00 | 2025-10-02 |
| 3 | '101' | 200.00 | 2025-10-03 |
Таблица customers:
| id (INT) | name (VARCHAR) | join_date (VARCHAR) |
|----------|----------------|---------------------|
| 101 | Ваня | '2025-09-01' |
| 102 | Таня | '2025-09-15' |
Обратите внимание: customer_id в orders — VARCHAR, а id в customers — INT. Это классическая ловушка!
Если типы не совпадают, SQL может не найти совпадений, даже если значения выглядят одинаково. Например, '101' (строка) не равно 101 (число) без явного приведения:
Плохой пример (JOIN не сработает):
SELECT o.id, c.name, o.amount
FROM orders o
JOIN customers c ON o.customer_id = c.id; -- Нет совпадений! Результат пустой
Почему?
• Поле "o.customer_id" — VARCHAR('101'),
• Поле "c.id" — INT(101).
SQL сравнивает типы строго.
Решение: Приведите типы с CAST.
Хороший пример:
SELECT o.id, c.name, o.amount
FROM orders o
JOIN customers c ON CAST(o.customer_id AS INT) = c.id; -- Теперь джойнится: Ваня с заказами 1 и 3
Функции вроде MAX, SUM, AVG и другие ожидают конкретные типы:
Представим столбец amount как VARCHAR в таблице test_amounts:
| amount (VARCHAR) |
|------------------|
| '10' |
| '2' |
| '100' |
Плохой пример:
SELECT MAX(amount) FROM test_amounts; -- Возвращает '2', потому что лексикографически '2' > '10' > '100' (сравнивает по символам)
Решение: Приведите к числу.
SELECT MAX(CAST(amount AS DECIMAL)) FROM test_amounts; -- Возвращает 100, как ожидается
Итого:
Типы данных — фундамент SQL. Несоответствия приводят к пустым джойнам, ошибкам функций и неверным расчётам. Всегда анализируйте типы заранее, приводите их явно. Это сэкономит часы отладки!
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29 2❤🔥1🐳1
Привет!
Хочу сегодня поделиться каналом Натальи, где она рассказывает свой путь самостоятельного развития от инженера-конструктора на заводе до senior data scientist в крупном банке.
Она может:
➖ рассказать, какие скиллы реально нужны в работе
➖ рассказать, что делать чтобы вашу работу не заменил ИИ
➖ подсказать, как проходить собеседования в ML/DSs,
➖ поделиться опытом работы дата саентистом в бигтех компании
➖ пошутить и повеселиться
Если думаете, куда развиваться в сфере Data Science — очень советую заглянуть к ней в канал
Хочу сегодня поделиться каналом Натальи, где она рассказывает свой путь самостоятельного развития от инженера-конструктора на заводе до senior data scientist в крупном банке.
Она может:
Если думаете, куда развиваться в сфере Data Science — очень советую заглянуть к ней в канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9 2 2
Сегодня покажу, как за 10-15 минут настроить доступ к Google Sheets через API и загрузить данные прямо в Pandas.
Что сделаем:
Зачем это нужно?
🔥 Это поможет для простой аналитики личных расходов или быстрых бизнес-запросов
✅ Легко стройте базовую аналитику: фильтры, join'ы и графики для бюджета или метрик бизнеса.
Приятного чтения
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥20🔥14🐳4 1 1
Привет! В прошлой части я рассказал про БАДы для борьбы с сидячим образом жизни, а сегодня, пока я нахожусь в родном крае и вдали от московской суеты, решил поделиться, как поддерживаю голову в тонусе. Работа за компом — это не только тело, но и мозг. Я стараюсь держать баланс, чтобы не скатиться в выгорание. Расскажу про свои приёмы — они простые, но реально работают. Но помните, это только мои личные наблюдения и у вас может быть по другому!
Мой топ-3 для менталки:
Итог:
Менталка в IT — это не роскошь, а необходимость, чтобы не выгорать. Для меня смена обстановки, живое общение и книги — как перезагрузка мозга: дают силы, ясность и радость. Попробуйте внедрить хотя бы один хак — начните с прогулки в парк. Но если чувствуете, что нужна помощь, обратитесь к специалисту — психолог, психотерапевт или коуч лучше подскажут персонально.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥18🔥15 6
Jupyter Notebook — мощный инструмент, но его горячие клавиши могут ускорить рутину в разы.
Важно знать: в Jupyter есть два режима работы с ячейками:
Разберём топ-комбинации для Command mode:
Выделение нескольких ячеек для массовых действий
• Shift + ↑ / ↓ — Зажмите Shift и жмите стрелки вверх/вниз, чтобы быстро выделить блок ячеек. Теперь комбинируйте с другими шорткатами:
— Выделите группу и нажмите D, D — удалите все сразу.
— Или Ctrl + Enter — запустите весь блок без перехода.
Это удобно для чистки или тестирования цепочек кода в больших ноутбуках.
Также, вы, можете ознакомиться с другими горячими клавишами, которые работают не только в jupyter notebook — об этом я писал пост вот здесь
Итого:
Это был топ моих горячих клавиш в Jupyter — от создания ячеек до редактирования кода. Начните с A/B/M и этим, вы, уже сэкономите много времени.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤🔥6🐳3 1
Сводные таблицы — это трюк в SQL, чтобы собрать данные в компактный вид. Вместо того чтобы показывать каждую запись отдельно, вы делаете колонки из категорий (например, из месяцев или кварталов). Так отчёт становится короче и проще для чтения. Сегодня разберём самый простой метод с CASE WHEN — он работает везде, без сложностей. Покажу на примере продаж в магазине.
Что такое сводная таблица на пальцах:
Представьте: у вас есть список заказов, где каждый заказ — отдельная строка. В сводной таблице вы группируете по клиенту и показываете суммы по кварталам в колонках (Q1, Q2 и т.д.). Вместо 6 строк на двух клиентов — всего 2 строки, где всё видно сразу.
Пример: таблица заказов
Вот исходная таблица Orders (продажи за год):
| customer_id | quarter | order_amount |
|-------------|---------|--------------|
| 101 | Q1 | 5000 |
| 101 | Q2 | 7000 |
| 101 | Q3 | 6000 |
| 102 | Q1 | 3000 |
| 102 | Q2 | 4500 |
| 102 | Q4 | 5500 |
Теперь задача: для каждого клиента показать сумму по кварталам в колонках.
Как это сделать шаг за шагом:
• Группируем по клиенту: GROUP BY customer_id — чтобы данные по каждому клиенту были в одной строке.
• Создаём колонки с CASE WHEN: Для каждого квартала проверяем "если это Q1, то суммируем сумму заказа, иначе 0". SUM() посчитает итог.
Вот полный запрос:
SELECT
customer_id,
SUM(CASE WHEN quarter = 'Q1' THEN order_amount ELSE 0 END) AS q1_sales,
SUM(CASE WHEN quarter = 'Q2' THEN order_amount ELSE 0 END) AS q2_sales,
SUM(CASE WHEN quarter = 'Q3' THEN order_amount ELSE 0 END) AS q3_sales,
SUM(CASE WHEN quarter = 'Q4' THEN order_amount ELSE 0 END) AS q4_sales
FROM Orders
GROUP BY customer_id
ORDER BY customer_id;
Что получится:
| customer_id | q1_sales | q2_sales | q3_sales | q4_sales |
|-------------|----------|----------|----------|----------|
| 101 | 5000 | 7000 | 6000 | 0 |
| 102 | 3000 | 4500 | 0 | 5500 |
Теперь по клиенту 101 всё в одной строке: видно, что в Q4 он не покупал. Легко сравнить!
Итог:
CASE WHEN — это лёгкий способ сделать сводную таблицу.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤🔥15🐳6
Сегодня хочу разобраться, зачем вообще нужна аналитика данных и почему компании готовы платить за неё хорошие деньги. Всё дело в подходе, где решения принимаются на основе реальных цифр, а не наугад или по интуиции.
Такой подход называется data-driven — когда данные ведут бизнес вперёд, помогая находить способы быстро заработать больше. Без аналитики и метрик (это просто измеримые показатели, как счётчик продаж или сколько людей уходит с сайта) вы не поймёте, что работает, а что нет. Давайте разберём по полочкам простыми словами.
Data-driven — это когда компания смотрит на факты из данных, чтобы решать, что делать дальше. Вместо "давайте запустим эту рекламу, потому что мне нравится" — "давайте проверим цифры и увидим, принесёт ли она клиентов". Это снижает ошибки, ускоряет рост и даёт преимущество. Например, в Netflix аналитики изучают, какие фильмы люди досматривают, и рекомендуют похожие — из-за этого пользователи остаются дольше и платят больше. Без такого подхода бизнес как в тумане: ты не знаешь, почему продажи падают или клиенты уходят.
Метрики — это простые цифры, которые показывают, как идёт дело: сколько людей купило товар (конверсия), сколько клиентов ушло (отток) или сколько денег вернулось от вложений (возврат инвестиций). Есть старая мудрость: "То, что измеряешь, то и улучшаешь" — без цифр ты не видишь проблем и не можешь их исправить. Метрики помогают:
Аналитик — это человек, который копается в данных и находит "золотые" идеи для роста бизнеса. Представь: ты смотришь на процесс продаж и видишь, что 40% людей уходят перед оплатой. Добавляешь быструю кнопку "оплатить в один клик" — и продажи растут на 20%. При большом трафике это может дать миллионы рублей за месяц!
Итог:
Data-driven подход и метрики — это основа для умных решений в бизнесе, а аналитика остаётся вечной профессией, потому что данные всегда будут генерироваться, а компании — искать способы роста
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤🔥7🐳6
На собеседованиях аналитиков часто спрашивают про медиану: "Как её посчитать в SQL без встроенных функций?" Это классика, потому что проверяет понимание сортировки, оконных функций и логики. Сегодня разберём всё по полочкам — от теории до кода.
Сначала разберём, что такое медиана и зачем она нужна:
Что такое медиана — это значение, которое находится посередине в отсортированном массиве чисел. Давайте разберём пару примеров, и вам сразу всё станет ясно.
• Представим массив чисел [5, 3, 1, 10, 8]. Давайте его отсортируем по возрастанию чисел [1, 3, 5, 8, 10] смотрим, какое значение находится посередине списка — правильно, это число 5. Отлично, мы нашли медиану.
• Что если в массиве данных чётное количество чисел, например [5, 3, 1, 10, 8, 1]. Так, давайте отсортируем [1, 1, 3, 5, 8, 10] видим, что середина находится между 3 и 5, тогда остаётся взять среднее между этими числами: (3+5)/2 = 4. Супер, разобрались, как находить медиану в чётных и нечётных массивах!
Теперь давайте разберёмся, а зачем вообще нужна медиана?
Представим, что мы хотим посчитать ЗП IT-компании, например, и у нас есть вот такие данные: [100тыс, 150тыс, 130тыс, 120тыс, 1млн]. Мы видим, что 1млн рублей выделяется из списка — давайте попробуем посчитать среднее и медиану и увидим, какая разница между ними?
• Среднее: (100тыс + 150тыс + 130тыс + 120тыс + 1млн)/5 = 300тыс.
• Медиана: отсортировано [100тыс, 120тыс, 130тыс, 150тыс, 1млн] — центральное 130тыс.
Вывод: медиана более точно отображает ситуацию, так как 1млн получает директор компании. Именно по этому и нужна медиана — она устойчива к выбросам, в отличие от среднего. Всё зависит от конкретной ситуации, и лучше считать сразу среднее и медиану, отталкиваясь от смысла данных. В аналитике медиана спасает в зарплатах, ценах на жильё или времени доставки — там, где есть аномалии.
Научимся находить медиану в SQL:
• Рассмотрим таблицу зарплат с чётным числом записей (6 сотрудников).
employee_id | salary
------------|----------
1 | 100000
2 | 150000
3 | 130000
4 | 120000
5 | 1000000
6 | 110000
• Пишем sql запрос:
WITH ranked AS (
SELECT
salary,
ROW_NUMBER() OVER (ORDER BY salary) AS rn,
COUNT(*) OVER () AS total_count
FROM salaries
)
SELECT AVG(salary) AS median
FROM ranked
WHERE rn IN (
FLOOR((total_count + 1) / 2.0),
CEIL((total_count + 1) / 2.0)
);
• Посмотрим, что делает CTE:
salary | rn | total_count
--------|----|-----------
100000 | 1 | 6
110000 | 2 | 6
120000 | 3 | 6
130000 | 4 | 6
150000 | 5 | 6
1000000 | 6 | 6
• Посмотрим, что делают FLOOR и CEIL:
FLOOR((total_count + 1) / 2.0) = FLOOR((6 + 1) / 2.0) = FLOOR(3.5) = 3 (округление вниз)
CEIL((total_count + 1) / 2.0) = CEIL((6 + 1) / 2.0) = CEIL(3.5) = 4 (округление вверх)
• Значит, мы берём строки с номерами 3 и 4:
salary | rn
--------|----
120000 | 3 ← берём
130000 | 4 ← берём
• Мы взяли строки с rn=3 и rn=4:
Результат:
----------------------------------------------------------------------
median = AVG(120000, 130000) = (120000 + 130000) / 2 = 250000 / 2 = 125000
Итог:
Медиана устойчива к выбросам, а в SQL её легко посчитать через CTE с ROW_NUMBER.
Сделал сайт - оцените:
@dima_sqlit
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥38🔥20 3