This media is not supported in your browser
VIEW IN TELEGRAM
Вот полезный трюк: используем функцию роз намбер с патришн бай чтобы нумеровать строки внутри каждой группы, а потом фильтруем по номеру.
Ты получишь первые два события для каждого пользователя. Можно легко адаптировать под «топ‑пять товаров в каждой категории.
Этот трюк работает в большинстве современных СУБД, поддерживающих оконные функци
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;
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Что умеет:
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот проект разрабатывается как учебная реализация OLAP-системы с поддержкой SQL-запросов, включая выполнение TPC-H тестов.
Для тех, кто хочет заглянуть под капот аналитических баз данных, RisingLight предлагает отличную возможность изучить их устройство на практике. Хотя проект пока не готов для production, он уже даёт представление о ключевых компонентах СУБД: от парсера запросов до исполнителя. Сообщество активно развивается: есть Discord, Telegram и даже WeChat-чат для обсуждения. Авторы приветствуют вклад новичков и предлагают список "good first issues" для первых PR.
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача
Есть таблица продаж по дням:
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 )
Зачем так делать:
Please open Telegram to view this post
VIEW IN TELEGRAM
Разработчики замутили настоящий олдскульный шедевр, который сделает из вас МАСТЕРА баз данных и точно не даст заскучать.
Любые запросы к базам — щёлкаем как семечки
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Этот агент умеет:
Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Doom на чем только ни запускали — на картошке, калькуляторе и тесте на беременность. Кажется, эта игра будет жить вечно, и через сотни лет ее будут запускать на кибернетических имплантах, космических кораблях или Пип-боях — в зависимости от того, куда в итоге повернет цивилизация. Ну а пока будущее не наступило, предлагаем оценить очередное воплощение бессмертной игры — теперь полностью на SQL.
У Лукаса Вогеля была CedarBD, месяц отпуска по уходу за ребенком и источник вдохновения — DuckDB-Doom. Да, это еще один Doom на SQL с вкраплениями JavaScript.
Лукас решил, что он может усовершенствовать эту идею:
Собственно, все это у него и получилось.
В общем, очередное доказательство превосходства как Doom, так и SQL. Если хотите своими глазами посмотреть, как вообще это работает, код лежит на гитхабе.
Всё пиз-Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
Нашёл только одно совпадение: "Machine Learning Overview".
А вот pgvector ищет по смыслу и находит связанные концепции.
Пример запроса возвращает 5 релевантных документов:
Семантический поиск > ключевого
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
💹 Анализ продаж и задолженности, оборот товара, управление запасами, план продаж – это и многое другое можно анализировать в 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
PySheets — онлайн-инструмент, в который можно загружать таблицы, анализировать их с помощью pandas и рисовать графики с помощью Matplotlib (и их потом можно куда-нибудь встроить). Про ИИ тоже не забыли — без него сейчас никуда. Он помогает писать код и выводит на консоль подсказки, как работать с PySheets. В платной версии это все можно делать вместе с коллегами.
В полной мере ознакомиться с функционалом инструмента позволяет весьма подробный туториал аж из 7 частей. Доступен бесплатно, но после регистрации.
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
Секрет не только в выборе модели или ассистента. Главное — как встроить ИИ в процессы: от кода и тестов до общения с заказчиком. Ускорение в 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
Хотите посчитать сумму только по условию прямо внутри агрегата?
Для этого не нужен отдельный 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;
Работает также с COUNT(), AVG() и другими агрегатами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждая линия на графике показывает улицу, панораму которой можно посмотреть на Google Street View. И как много в этом смыслов! И развитость инфраструктуры, и политика.
Кстати, а кто понимает, что за внезапные панорамы в Антарктике?
Интерактив: https://sv-map.netlify.app/
Please open Telegram to view this post
VIEW IN TELEGRAM
Библиотека boost_sqlite предоставляет удобный интерфейс для работы с SQLite в C++. Она поддерживает типизированные запросы, подготовленные выражения, функции на основе JSON и пользовательские функции. Библиотека не скрывает C-API SQLite, а дополняет его.
Основные моменты:
Please open Telegram to view this post
VIEW IN TELEGRAM
Найдите пользователей, которые не подтвердили регистрацию в день регистрации, но подтвердили на следующий день.
Исходные таблицы:
-
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;
Please open Telegram to view this post
VIEW IN TELEGRAM
SQLite тоже умеет в векторный поиск — для этого уже есть несколько расширений. Но их главная проблема в том, что в основном они либо медленные, либо неудобные.
А ведь, наверное, главное, чего хотят от SQLite — чтобы он был легким, простым и быстрым. И, конечно, нашлись люди, которые попробовали разработать свое решение, отвечающее этим требованиям.
Разработчики сравнили свое решение с популярными аналогами (точнее только с одним по факту) — если очень захотеть, то sqlite-vector может быть аж в 17 раз быстрее sqlite-vec. Да, названия у них не очень креативные и перепутать легко. С libsql сравнить не удалось, потому что он так долго возился с созданием индекса, что всем надоело ждать.
Расширение распространяется по Elastic License 2.0. Скачать можно с гитхаба.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ivory — это инструмент с открытым исходным кодом, который упрощает работу с кластерами Postgres, предоставляя удобный интерфейс для разработчиков и администраторов баз данных. Он позволяет управлять конфигурацией кластера, выполнять запросы и контролировать состояние в одном месте.
Основные моменты:
Please open Telegram to view this post
VIEW IN TELEGRAM
Стань LLM-инженером: от fine-tuning до запуска продуктивных ИИ-систем вместе с Газпромбанком и X5🚀
Курс «Инженер LLM» — про то, как на практике собирать рабочие архитектуры под реальные задачи, адаптировать open‑source решения и запускать продукты с ИИ, которые действительно работают.
Ты научишься:
➡️ дообучать модели (fine-tuning, PEFT, LoRA / QLoRA, RLHF);
➡️ работать с LangChain, LangGraph и векторными базами;
➡️ собирать рабочие архитектуры под реальные задачи;
➡️ строить RAG‑системы, реализовывать инфопоиск и защищать LLM;
➡️ собирать пайплайны, деплоить, трекать, версионировать;
➡️ проектировать мультиагентные решения и ассистентов.
Тебя будут обучать лиды и хеды ИИ-команд:
- Желтова Кристина, директор по разработке моделей в Газпромбанке;
- Потехин Александр, NLP Lead X5 Tech;
- Андреева Дарья, ML Engineer (NLP) X5 Tech.
Посмотреть программу и оставить заявку
Курс «Инженер LLM» — про то, как на практике собирать рабочие архитектуры под реальные задачи, адаптировать open‑source решения и запускать продукты с ИИ, которые действительно работают.
Создан GIGASCHOOL, совместно с крупнейшей магистратурой по искусственному интеллекту AI Talent Hab.
Ты научишься:
Тебя будут обучать лиды и хеды ИИ-команд:
- Желтова Кристина, директор по разработке моделей в Газпромбанке;
- Потехин Александр, 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
Хотите быстро найти дубликаты в таблице — но не просто значения, а ещё и сразу оставить только уникальные строки?
Вместо сложных подзапросов используйте `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
Игра не просто работает, а поддерживает многопользовательский режим, отрисовывая всё с помощью ASCII-графики.
Каждый компонент — от рендера до синхронизации игроков — написан исключительно на SQL-запросах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите посчитать «бегущую сумму» или ранжирование без подзапросов?
Используйте WINDOW FUNCTIONS — они считаются построчно, не сворачивая данные.
SELECT
customer_id,
order_date,
amount,
SUM(amount) OVER (
PARTITION BY customer_id
ORDER BY order_date
) AS running_total
FROM orders;
Оконные функции позволяют легко строить кумулятивные метрики, рейтинги и скользящие средние прямо в одном запросе.
Please open Telegram to view this post
VIEW IN TELEGRAM