Data Science: SQL и Аналитика данных
28.2K subscribers
234 photos
46 videos
1 file
283 links
№ 6205468675

На простом языке: про работу с данными, современные технологии, AI, машинное обучение и, немного, SQL.

Сотрудничество: @niktwix

Менеджер: @Spiral_Yuri
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔥SQL ТРЮК: Как выбрать первые N строк в каждой группе

Вот полезный трюк: используем функцию роз намбер с патришн бай чтобы нумеровать строки внутри каждой группы, а потом фильтруем по номеру.

Ты получишь первые два события для каждого пользователя. Можно легко адаптировать под «топ‑пять товаров в каждой категории.

Этот трюк работает в большинстве современных СУБД, поддерживающих оконные функци


sql
WITH ranked AS (
SELECT
user_id,
event_time,
event_type,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY event_time ASC
) AS rn
FROM user_events
)
SELECT *
FROM ranked
WHERE rn <= 2;



⏺️Этот запрос выберет первые 2 события *по каждому пользователю*. Просто, чисто и кросс‑совместимо — работает в PostgreSQL, MySQL 8+, SQL Server и других.

➡️ https://www.youtube.com/shorts/X5CJn1eLW20

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Open-source инструмент для просмотра CSV, JSON, Excel и других таблиц прямо в терминале — без потери форматирования, аккуратно и читабельно.

Что умеет:

⏺️ Встроенный SQL-движок: фильтры, джойны и анализ прямо в терминале;
⏺️ Vim-подобные хоткеи (для фанатов, да 😁);
⏺️ Быстрый поиск, работа с несколькими таблицами, поддержка тем (Monokai, Nord и др.).

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ RisingLight — образовательная OLAP-база данных.

Этот проект разрабатывается как учебная реализация OLAP-системы с поддержкой SQL-запросов, включая выполнение TPC-H тестов.

Для тех, кто хочет заглянуть под капот аналитических баз данных, RisingLight предлагает отличную возможность изучить их устройство на практике. Хотя проект пока не готов для production, он уже даёт представление о ключевых компонентах СУБД: от парсера запросов до исполнителя. Сообщество активно развивается: есть Discord, Telegram и даже WeChat-чат для обсуждения. Авторы приветствуют вклад новичков и предлагают список "good first issues" для первых PR.

➡️ Посмотреть на GitHub

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Продвинутая задача по SQL (Oracle): найти «бычьи серии» продаж и момент разворота

Задача
Есть таблица продаж по дням:

sales(day_date DATE, customer_id NUMBER, amount NUMBER)

Нужно для каждого клиента найти интервалы из не меньше 3 подряд идущих дней, где сумма amount строго возрастает каждый день, а на следующий день после интервала происходит разворот вниз (т.е. amount меньше, чем в последний день серии). Для каждого такого интервала вернуть:
- customer_id
- start_date, end_date серии
- length (длина серии в днях)
- last_amount (сумма в последний день серии)
- drop_amount (сумма в день разворота)
- drop_pct (процент падения относительно last_amount)

Решение (Oracle 12c+): используем MATCH_RECOGNIZE


SELECT *
FROM sales
MATCH_RECOGNIZE (
PARTITION BY customer_id
ORDER BY day_date
MEASURES
FIRST(day_date) AS start_date,
LAST(day_date) AS end_date,
COUNT(A.*) AS length,
LAST(amount) AS last_amount,
NEXT(amount) AS drop_amount,
ROUND( (LAST(amount) - NEXT(amount)) / NULLIF(LAST(amount),0) * 100, 2 ) AS drop_pct
ONE ROW PER MATCH
AFTER MATCH SKIP PAST LAST ROW
PATTERN (A{3,} D)
DEFINE
A AS ( PREV(amount) IS NULL OR amount > PREV(amount) ),
D AS amount < PREV(amount)
);



Пояснение
- PATTERN (A{3,} D) — ищем подпоследовательность из минимум трёх строго возрастающих дней A, за которой сразу идёт день падения D.
- DEFINE A — рост относительно предыдущего дня в группе клиента.
- DEFINE D — падение относительно предыдущего дня (последнего A).
- MEASURES — извлекаем границы серии и метрики, NEXT(amount) берёт сумму в день разворота.
- AFTER MATCH SKIP PAST LAST ROW — не пересекаем серии.

Бонус: защита от «лестниц» с пропусками дат
Если в данных бывают пропуски дней, а вам нужны подряд идущие даты, добавьте проверку календарной последовательности:


DEFINE
A AS ( (PREV(amount) IS NULL OR amount > PREV(amount))
AND (PREV(day_date) IS NULL OR day_date = PREV(day_date) + 1) ),
D AS ( amount < PREV(amount) AND day_date = PREV(day_date) + 1 )



Зачем так делать:

⏺️MATCH_RECOGNIZE — мощный инструмент Oracle для поиска сложных паттернов по времени (распознавание трендов, разрывов, «голова-плечи», аномалий). Он заменяет громоздкие CTE с аналитиками и делает запрос короче, быстрее и точнее при работе с последовательностями.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ Учим SQL через захватывающую аркадную игру

Разработчики замутили настоящий олдскульный
шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.

⏺️ Проходим уровни, собираем пазлы вместе с уткой DuckDB и прокачиваем SQL на максимум.
⏺️ Квесты, задачи, подсказки — всё как в настоящем приключении.
⏺️ Работает прямо в браузере и даже на телефоне.

Любые запросы к базам — щёлкаем как семечки

➡️ https://dbquacks.com/

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🔥 Jupyter Agent 2

Этот агент умеет:

⏺️ Загружать данные
⏺️ Запускать код
⏺️ Строить графики прямо в Jupyter — быстрее, чем вы успеете прокрутить экран!

⏺️ Основан на движке Qwen3-Coder
⏺️ Работает на Cerebras
⏺️ Запускается в E2B
⏺️ Поддерживает загрузку файлов

➡️ Попробовать можно здесь: клик

Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ DOOMQL: Doom на SQL

Doom на чем только ни запускали — на картошке, калькуляторе и тесте на беременность. Кажется, эта игра будет жить вечно, и через сотни лет ее будут запускать на кибернетических имплантах, космических кораблях или Пип-боях — в зависимости от того, куда в итоге повернет цивилизация. Ну а пока будущее не наступило, предлагаем оценить очередное воплощение бессмертной игры — теперь полностью на SQL.

У Лукаса Вогеля была CedarBD, месяц отпуска по уходу за ребенком и источник вдохновения — DuckDB-Doom. Да, это еще один Doom на SQL с вкраплениями JavaScript.

Лукас решил, что он может усовершенствовать эту идею:
⏺️отказаться от JS и написать все полностью на SQL,
⏺️улучшить производительность,
⏺️добавить мультиплеерный элемент.

Собственно, все это у него и получилось.
⏺️Все данные о мире игры — карта, мобы, игроки — размещены в таблицах. Все события — перемещения, выстрелы, убийства мобов, респавны — учитываются скриптом, который запускается 30 раз в секунду.
⏺️Визуал — это SQL-представления, отрисованные в 3D c помощью рейкастинга.
⏺️Можно не только играть с друзьями, но и даже читерить.
⏺️И все это с уверенными 30 FPS при разрешении 128 x 64 пикселей.

В общем, очередное доказательство превосходства как Doom, так и SQL. Если хотите своими глазами посмотреть, как вообще это работает, код лежит на гитхабе.

Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Классический поиск по ключевым словам даёт ограниченные результаты.

Нашёл только одно совпадение: "Machine Learning Overview".

А вот pgvector ищет по смыслу и находит связанные концепции.

Пример запроса возвращает 5 релевантных документов:

⏺️ Machine Learning Overview
⏺️ Data Mining Basics
⏺️ Introduction to AI
⏺️ Deep Learning Guide

Семантический поиск > ключевого 🔥

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Как эффективно выгружать данные из 1С в систему BI аналитики.

💹 Анализ продаж и задолженности, оборот товара, управление запасами, план продаж – это и многое другое можно анализировать в PIX BI, получив данные из 1С.

1C — это закрытая проприетарная система, подключиться к которой напрямую и просто выгрузить данные без нарушения лицензионной политики нельзя.
📊 Как загрузить данные из 1С в PIX BI мы расскажем на вебинаре вместе с нашим партнером «PIX BI».

1) Разберем - основные проблемы получения данных из 1С;
2) Рассмотрим - разные способы выгрузки данных из 1С в PIX BI;
3) Продемонстрируем - выгрузку из 1С в PIX BI без написания кода;
4) Покажем - как быстро визуализировать загруженные данные.

📌Бесплатный партнерский вебинар с тремя компаниями: Денвик Аналитика, PIX BI, Первый Бит.

Заполните заявку для регистрации на мероприятие:
https://webinar-denvic.ru/?utm_campaign=pdatascience&utm_content=target_telegram
🔥Python + таблички = PySheets

PySheets — онлайн-инструмент, в который можно загружать таблицы, анализировать их с помощью pandas и рисовать графики с помощью Matplotlib (и их потом можно куда-нибудь встроить). Про ИИ тоже не забыли ­— без него сейчас никуда. Он помогает писать код и выводит на консоль подсказки, как работать с PySheets. В платной версии это все можно делать вместе с коллегами.

➡️ И все это в браузере — не надо ничего разворачивать, устанавливать или платить за облако. Интерфейс очень простой: есть таблица, окошко для кода, консоль, кнопка для вызова ИИ-ассистента.

В полной мере ознакомиться с функционалом инструмента позволяет весьма подробный туториал аж из 7 частей. Доступен бесплатно, но после регистрации.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Почему одни команды с AI делают релизы за неделю, а другие откладывают их на месяцы?

Секрет не только в выборе модели или ассистента. Главное — как встроить ИИ в процессы: от кода и тестов до общения с заказчиком. Ускорение в 2–3 раза возможно не потому что нейросеть сработает с одного промпта, а благодаря правильной организации — когда команда работает с ИИ как с полноценным членом команды.

➡️ Об этом и пойдёт речь на AI Boost 2025 (3 октября, Москва, ДК «Рассвет»).
Лидеры из Яндекса, Сбера, Альфа-Банка, Surf, T-Tech и других бигтехов расскажут, как реально меняется разработка в их продуктах.

Вы узнаете:

⏺️ Как приучить десятки разработчиков к вайбкодингу и при этом сохранить мир в команде

⏺️ Почему shift-left подход и автогенерация тестов уже стали стандартом QA

⏺️ Чем автономные AI-агенты отличаются от Copilot и как они берут на себя весь SDLC

Кроме выступлений, вас ждут два круглых стола:

⚔️ «ИИ vs Безопасность» — где баланс между скоростью релизов и критичными рисками в проектах с высокими требованиями к безопасности

🏗 «ИИ в продакшн» — можно ли доверить моделям архитектуру и код без потери качества и получения спагетти-кода

У участников будет возможность получить бесплатную консультацию с CTO Surf по внедрению ИИ в конкретные проекты.

🗓 Когда: 3 октября 2025 года, 12:00
📍 Где: Москва, ДК «Рассвет»
🎟 Регистрация

Реклама. ИНН 3665812625, erid: 2VtzqvoJxBn
➡️ SQL: условные агрегаты через CASE !!!

Хотите посчитать сумму только по условию прямо внутри агрегата?
Для этого не нужен отдельный WHERE — используйте CASE WHEN.


SELECT
customer_id,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS completed_sum,
SUM(CASE WHEN status = 'pending' THEN amount ELSE 0 END) AS pending_sum
FROM orders
GROUP BY customer_id;



👀 В одном запросе можно посчитать суммы по разным статусам — и не делать несколько JOIN или подзапросов.
Работает также с COUNT(), AVG() и другими агрегатами.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Мир по версии Google Street View

Каждая линия на графике показывает улицу, панораму которой можно посмотреть на Google Street View. И как много в этом смыслов! И развитость инфраструктуры, и политика.

Кстати, а кто понимает, что за внезапные панорамы в Антарктике?

Интерактив: https://sv-map.netlify.app/

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ C++ обертка для SQLite с расширенными возможностями

Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.

Основные моменты:


⏺️ Типизированные запросы и подготовленные выражения
⏺️ Поддержка JSON и пользовательских функций
⏺️ Виртуальные таблицы и хуки событий
⏺️ Легкая интеграция с существующими проектами

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Задача из интервью TikTok по SQL

Найдите пользователей, которые не подтвердили регистрацию в день регистрации, но подтвердили на следующий день.

Исходные таблицы:
- emails(email_id, user_id, signup_date)
- texts(text_id, email_id, signup_action {'Confirmed','Not confirmed'}, action_date)

Решение (универсально для Postgres/MySQL):

SELECT DISTINCT e.user_id
FROM emails e
WHERE EXISTS (
SELECT 1
FROM texts t1
WHERE t1.email_id = e.email_id
AND t1.signup_action = 'Confirmed'
AND DATE(t1.action_date) = DATE(e.signup_date + INTERVAL '1 day') -- подтвердил на 2-й день
)
AND NOT EXISTS (
SELECT 1
FROM texts t0
WHERE t0.email_id = e.email_id
AND t0.signup_action = 'Confirmed'
AND DATE(t0.action_date) = DATE(e.signup_date) -- не подтвердил в день регистрации
);


Вариант через агрегацию (Postgres)🧩


SELECT e.user_id
FROM emails e
JOIN texts t ON t.email_id = e.email_id
GROUP BY e.user_id, e.signup_date
HAVING COUNT(*) FILTER (
WHERE t.signup_action = 'Confirmed' AND DATE(t.action_date) = DATE(e.signup_date)
) = 0
AND COUNT(*) FILTER (
WHERE t.signup_action = 'Confirmed' AND DATE(t.action_date) = DATE(e.signup_date + INTERVAL '1 day')
) >= 1;


🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥Sqlite-vector: простой и удобный векторный поиск в SQLite

SQLite тоже умеет в векторный поиск — для этого уже есть несколько расширений. Но их главная проблема в том, что в основном они либо медленные, либо неудобные.

А ведь, наверное, главное, чего хотят от SQLite — чтобы он был легким, простым и быстрым. И, конечно, нашлись люди, которые попробовали разработать свое решение, отвечающее этим требованиям.

➡️ sqlite-vector — бесплатное кросс-платформенное расширение, которое обходится 30 МБ памяти, складывает векторы в обычные таблицы (без возни с виртуальными и сложными SQL-запросами), хранит данные локально и работает оффлайн. Ему не нужен дополнительный сервер и долгая нудная подготовка, настройка и преиндексиование.

Разработчики сравнили свое решение с популярными аналогами (точнее только с одним по факту) — если очень захотеть, то sqlite-vector может быть аж в 17 раз быстрее sqlite-vec. Да, названия у них не очень креативные и перепутать легко. С libsql сравнить не удалось, потому что он так долго возился с созданием индекса, что всем надоело ждать.

Расширение распространяется по Elastic License 2.0. Скачать можно с гитхаба.

🫡 Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Удобный инструмент для управления кластерами Postgres

Ivory — это инструмент с открытым исходным кодом, который упрощает работу с кластерами Postgres, предоставляя удобный интерфейс для разработчиков и администраторов баз данных. Он позволяет управлять конфигурацией кластера, выполнять запросы и контролировать состояние в одном месте.

Основные моменты:

⏺️Упрощает управление Postgres кластерами
⏺️Интуитивно понятный интерфейс для основных функций Patroni
⏺️Возможность работы локально или в виртуальной машине
⏺️Поддержка редактирования конфигурации кластера
⏺️Инструменты для диагностики и устранения проблем

➡️ GitHub: https://github.com/veegres/ivory

🫡 Всё про Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Стань LLM-инженером: от fine-tuning до запуска продуктивных ИИ-систем вместе с Газпромбанком и X5🚀

Курс «Инженер LLM» — про то, как на практике собирать рабочие архитектуры под реальные задачи, адаптировать open‑source решения и запускать продукты с ИИ, которые действительно работают.

Создан GIGASCHOOL, совместно с крупнейшей магистратурой по искусственному интеллекту AI Talent Hab.


Ты научишься:
➡️дообучать модели (fine-tuning, PEFT, LoRA / QLoRA, RLHF);
➡️работать с LangChain, LangGraph и векторными базами;
➡️собирать рабочие архитектуры под реальные задачи;
➡️строить RAG‑системы, реализовывать инфопоиск и защищать LLM;
➡️собирать пайплайны, деплоить, трекать, версионировать;
➡️проектировать мультиагентные решения и ассистентов.

Тебя будут обучать лиды и хеды ИИ-команд:
- Желтова Кристина, директор по разработке моделей в Газпромбанке;
- Потехин Александр, NLP Lead X5 Tech;
- Андреева Дарья, ML Engineer (NLP) X5 Tech.

▪️252 часа теории и практики;
▪️диплом о профессиональной подготовке;
▪️старт 15 октября | 25 недель онлайна с заранее продуманными каникулами;
▪️36 450₽/мес (рассрочка);
▪️повышение цены — 3 октября.


Посмотреть программу и оставить заявку
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ SQL хитрый трюк

Хотите быстро найти дубликаты в таблице — но не просто значения, а ещё и сразу оставить только уникальные строки?

Вместо сложных подзапросов используйте `ROW_NUMBER()` с PARTITION BY:


WITH numbered AS (
SELECT
id,
email,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
SELECT id, email
FROM numbered
WHERE rn = 1;



📌 Что происходит:
- PARTITION BY email группирует строки по email
- ROW_NUMBER() нумерует их внутри группы
- WHERE rn = 1 оставляет только первую запись (а все дубликаты убираются)

💡 Так можно элегантно чистить таблицы от дублей без лишних вложенных запросов.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥На чистом SQL запустили легендарный DOOM — прямо внутри базы данных CedarDB!

Игра не просто работает, а поддерживает многопользовательский режим, отрисовывая всё с помощью ASCII-графики.
Каждый компонент — от рендера до синхронизации игроков — написан исключительно на SQL-запросах.

➡️ GitHub для настоящих ценителей извращённого кода: https://github.com/cedardb/DOOMQL

🫡 Всё про Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥SQL: использование оконных функций для накопительных сумм

Хотите посчитать «бегущую сумму» или ранжирование без подзапросов?
Используйте WINDOW FUNCTIONS — они считаются построчно, не сворачивая данные.


SELECT 
customer_id,
order_date,
amount,
SUM(amount) OVER (
PARTITION BY customer_id
ORDER BY order_date
) AS running_total
FROM orders;



➡️ Здесь для каждого клиента мы получаем накопительную сумму по мере добавления заказов.
Оконные функции позволяют легко строить кумулятивные метрики, рейтинги и скользящие средние прямо в одном запросе.

🫡 Всё про Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM