🧠 SQL-задача для продвинутых: как найти самые длинные серии входов без пропусков?
Представим таблицу
Нужно определить: для каждого пользователя — самую длинную непрерывную последовательность дней, когда он заходил на сайт (без пропущенных дат).
💡 Хитрый приём: если пронумеровать входы с
Вот решение:
📌 Подходит для задач с непрерывной активностью, логами, аналитикой по клиентам и временным последовательностям.
Представим таблицу
logins
:user_id INT,
login_date DATE
Нужно определить: для каждого пользователя — самую длинную непрерывную последовательность дней, когда он заходил на сайт (без пропущенных дат).
💡 Хитрый приём: если пронумеровать входы с
ROW_NUMBER()
, то разность login_date - row_number
будет постоянной в рамках серии подряд идущих дней. Это позволяет сгруппировать такие серии и посчитать их длину.Вот решение:
WITH login_ranked AS (
SELECT
user_id,
login_date,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_date) AS rn
FROM logins
),
grouped AS (
SELECT
user_id,
login_date,
DATE_SUB(login_date, INTERVAL rn DAY) AS grp
FROM login_ranked
),
group_lengths AS (
SELECT
user_id,
grp,
COUNT(*) AS streak_length
FROM grouped
GROUP BY user_id, grp
)
SELECT
user_id,
MAX(streak_length) AS max_consecutive_days
FROM group_lengths
GROUP BY user_id
ORDER BY max_consecutive_days DESC;
📌 Подходит для задач с непрерывной активностью, логами, аналитикой по клиентам и временным последовательностям.
👍11❤1
🚀 *Amazon запускает S3 Vectors — и это может перевернуть рынок векторных БД*
На первый взгляд — просто новый сервис. На деле — возможно, главная новость для AI-инфраструктуры в 2024.
Когда Amazon представил S3 в 2006, он навсегда изменил подход к хранению данных: больше не нужно думать о дисках — только API и бесконечное масштабирование. S3 Vectors может сделать то же самое с векторными БД.
💡 Почему это важно
1️⃣ Резкое удешевление
- $0.06/GB за хранение, $0.004/TB за запросы
- В 10–400 раз дешевле, чем популярные векторные хостинги
- Подходит для стартапов, особенно с бесплатными AWS-кредитами
2️⃣ Масштабируемость без DevOps
- Храни миллиарды векторов
- Запросы — за сотни миллисекунд
- Без серверов: просто создаёшь *vector bucket* и используешь API
3️⃣ Глубокая интеграция с AWS-экосистемой
- Bedrock (RAG-приложения)
- OpenSearch (tiered storage)
- SageMaker и другие сервисы
- Всё подключается "из коробки"
🛠️ Что можно делать
- Масштабируемый RAG с низкой ценой
- Поиск по смыслу в документах, видео, медизображениях, коду
- Долгосрочная память для AI-агентов
- Семантический корпоративный поиск
📈 Сообщество уже тестирует: среднее время запроса — ~250 мс. Preview-доступ открыт в регионах US East/West, Frankfurt и Sydney.
🔗 https://aws.amazon.com/blogs/aws/introducing-amazon-s3-vectors-first-cloud-storage-with-native-vector-support-at-scale/
Если пробуете — делитесь результатами. Это может быть началом нового стандарта.
На первый взгляд — просто новый сервис. На деле — возможно, главная новость для AI-инфраструктуры в 2024.
Когда Amazon представил S3 в 2006, он навсегда изменил подход к хранению данных: больше не нужно думать о дисках — только API и бесконечное масштабирование. S3 Vectors может сделать то же самое с векторными БД.
💡 Почему это важно
1️⃣ Резкое удешевление
- $0.06/GB за хранение, $0.004/TB за запросы
- В 10–400 раз дешевле, чем популярные векторные хостинги
- Подходит для стартапов, особенно с бесплатными AWS-кредитами
2️⃣ Масштабируемость без DevOps
- Храни миллиарды векторов
- Запросы — за сотни миллисекунд
- Без серверов: просто создаёшь *vector bucket* и используешь API
3️⃣ Глубокая интеграция с AWS-экосистемой
- Bedrock (RAG-приложения)
- OpenSearch (tiered storage)
- SageMaker и другие сервисы
- Всё подключается "из коробки"
🛠️ Что можно делать
- Масштабируемый RAG с низкой ценой
- Поиск по смыслу в документах, видео, медизображениях, коду
- Долгосрочная память для AI-агентов
- Семантический корпоративный поиск
📈 Сообщество уже тестирует: среднее время запроса — ~250 мс. Preview-доступ открыт в регионах US East/West, Frankfurt и Sydney.
🔗 https://aws.amazon.com/blogs/aws/introducing-amazon-s3-vectors-first-cloud-storage-with-native-vector-support-at-scale/
Если пробуете — делитесь результатами. Это может быть началом нового стандарта.
👍7❤4🥰2
📘 Шпаргалки по SQL — база и оконные функции в одном месте
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
2️⃣ Все типы
3️⃣
4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
2️⃣
3️⃣ Работа с рамками окна:
4️⃣ Сортировка внутри окна и реальные примеры запросов
🔗 Оконные функции в SQL
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
▶️ Сохраняйте себе, чтобы не потерять
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
SELECT
, WHERE
, GROUP BY
, HAVING
2️⃣ Все типы
JOIN
с примерами 3️⃣
CASE WHEN
, UNION
и подзапросы 4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
ROW_NUMBER
, RANK
, DENSE_RANK
, NTILE
2️⃣
LAG
, LEAD
, FIRST_VALUE
, LAST_VALUE
3️⃣ Работа с рамками окна:
ROWS BETWEEN
, RANGE
, GROUPS
4️⃣ Сортировка внутри окна и реальные примеры запросов
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍7🔥7
Forwarded from Machine learning Interview
This media is not supported in your browser
VIEW IN TELEGRAM
🔊 OpenVoice — опенсовр инструмент для клонирования голоса
Вы можете сгенерировать копию любого голоса всего по одной короткой записи — и озвучивать тексты с нужной интонацией, эмоцией и даже на другом языке.
💡 Что умеет:
— Воспроизводит голос с точным тембром и стилем
— Меняет тон, темп, эмоции и акцент
— Работает даже с языками, которых не было в обучении (zero-shot)
— Быстрая генерация и минимальные ресурсы — дешевле многих коммерческих решений
⚙️ Как устроено:
OpenVoice использует комбинацию моделей: одна отвечает за стиль, вторая — за тональность и характеристики речи. Обучена на сотнях тысяч голосов и стилей.
Онлайн-демо: https://huggingface.co/spaces/myshell-ai/OpenVoice
🎯 Кому подойдёт:
— Авторам подкастов, дикторам и блогерам
— Разработчикам — для интеграции озвучки в приложения
— Исследователям — для изучения архитектуры голосовых моделей
• Github: https://github.com/myshell-ai/OpenVoice/tree/main
@machinelearning_interview
Вы можете сгенерировать копию любого голоса всего по одной короткой записи — и озвучивать тексты с нужной интонацией, эмоцией и даже на другом языке.
💡 Что умеет:
— Воспроизводит голос с точным тембром и стилем
— Меняет тон, темп, эмоции и акцент
— Работает даже с языками, которых не было в обучении (zero-shot)
— Быстрая генерация и минимальные ресурсы — дешевле многих коммерческих решений
⚙️ Как устроено:
OpenVoice использует комбинацию моделей: одна отвечает за стиль, вторая — за тональность и характеристики речи. Обучена на сотнях тысяч голосов и стилей.
Онлайн-демо: https://huggingface.co/spaces/myshell-ai/OpenVoice
🎯 Кому подойдёт:
— Авторам подкастов, дикторам и блогерам
— Разработчикам — для интеграции озвучки в приложения
— Исследователям — для изучения архитектуры голосовых моделей
• Github: https://github.com/myshell-ai/OpenVoice/tree/main
@machinelearning_interview
❤5👍4🔥3
📑 go-sqlite3 — необычная реализация SQLite для Go, которая обходится без cgo. Вместо традиционных биндингов проект использует Wasm-сборку SQLite и рантайм wazero, что делает его полностью независимым от системных библиотек.
Драйвер остаётся совместимым с стандартным интерфейсом
🤖 GitHub
Драйвер остаётся совместимым с стандартным интерфейсом
database/sql,
но при этом предлагает прямой доступ к низкоуровневым функциям SQLite. Разработчики уделили внимание тестированию: поддержка множества архитектур и ОС, включая экзотические вроде RISC-V или Solaris. 🤖 GitHub
🔥7❤2👍2😁1🆒1
Forwarded from Machinelearning
Архитектура Mixture-of-Recursions (MoR), предложенная Google в соавторстве с KAIST AI объединяет в едином фреймворке традиционные подходы разделения параметров и адаптивные вычисления, заставляя модель думать над каждым токеном с разной глубиной.
Под капотом MoR - рекурсивный трансформер, который прогоняет входные данные через один и тот же блок слоев несколько раз. Но главная фишка в том, что количество этих прогонов, или глубина рекурсии, не фиксированное, а динамическое и определяется для каждого токена индивидуально.
Легковесный обучаемый роутер анализирует токен и решает, сколько вычислительных усилий на него потратить. Простые слова могут пройти всего один цикл рекурсии, в то время как семантически нагруженные термины отправятся на более глубокую обработку из нескольких циклов.
Это дает два главных преимущества:
При одинаковом бюджете на обучение (в FLOPs) и меньшем размере самой модели MoR показывает более низкую перплексию и лучшие результаты в few-shot задачах, чем стандартные и рекурсивные аналоги.
@ai_machinelearning_big_data
#AI #ML #LLM #Architecture #MoR
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1
📄 Sparrow — интеллектуальный парсинг документов с помощью LLM. Этот проект сочетает компьютерное зрение и языковые модели для извлечения информации из счетов, банковских выписок и других сложных документов.
Инструмент имеет модульную архитектуру, позволяющую запускать pipelines как локально, так и в облаке через Hugging Face. Интересно, что Sparrow не просто распознает текст, а понимает семантику документов — система может извлекать конкретные поля по JSON-шаблону и даже обрабатывать многостраничные PDF с сохранением структуры.
🤖 GitHub
➡ SQL Community | Чат
Инструмент имеет модульную архитектуру, позволяющую запускать pipelines как локально, так и в облаке через Hugging Face. Интересно, что Sparrow не просто распознает текст, а понимает семантику документов — система может извлекать конкретные поля по JSON-шаблону и даже обрабатывать многостраничные PDF с сохранением структуры.
🤖 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2
120 ключевых вопросов по SQL за 2025 год
Статья содержит 120 ключевых вопросов по SQL для собеседований, разделённых по темам и уровням сложности, с краткими пояснениями.
Основываясь на актуальных требованиях 2025 года, вопросы охватывают базу данных, оптимизацию, практические задачи и нюансы СУБД (MySQL, PostgreSQL, SQL Server).
🔜 Подробности
Статья содержит 120 ключевых вопросов по SQL для собеседований, разделённых по темам и уровням сложности, с краткими пояснениями.
Основываясь на актуальных требованиях 2025 года, вопросы охватывают базу данных, оптимизацию, практические задачи и нюансы СУБД (MySQL, PostgreSQL, SQL Server).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Частая задача в аналитике — найти записи, где, например, один и тот же email встречается с разными user_id или IP. Это может быть индикатором мультиаккаунта, спама или ошибок.
-- Найдём email-адреса, у которых более одного уникального user_id
SELECT email
FROM users
GROUP BY email
HAVING COUNT(DISTINCT user_id) > 1;
-- Если нужно вытащить сами строки — можно использовать подзапрос
SELECT *
FROM users
WHERE email IN (
SELECT email
FROM users
GROUP BY email
HAVING COUNT(DISTINCT user_id) > 1
);
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍6❤1🥰1
🧩 Анатомия SQL‑запроса: как он устроен на самом деле
SQL выглядит просто, но за каждой строчкой — строгая логика и порядок выполнения. Вот из чего состоит любой запрос:
🧱 Компоненты:
-
- Идентификаторы — названия таблиц и колонок.
- Литералы — значения:
- Выражения —
⚙️ Порядок выполнения СУБД (не как в коде!):
1.
2.
3.
4.
5.
6.
7.
📌 То есть сначала СУБД соединяет таблицы, потом фильтрует, группирует, считает, сортирует и только потом возвращает результат.
🧠 SQL — декларативный язык. Ты описываешь, что хочешь получить, а не как это сделать.
🔗 Полная статья
SQL выглядит просто, но за каждой строчкой — строгая логика и порядок выполнения. Вот из чего состоит любой запрос:
🧱 Компоненты:
-
SELECT
, FROM
, WHERE
, JOIN
, GROUP BY
, HAVING
, ORDER BY
, LIMIT
— это клаузы, блоки, из которых строится запрос.- Идентификаторы — названия таблиц и колонок.
- Литералы — значения:
'USA'
, 100
, '2025-01-01'
.- Выражения —
salary * 1.2
, age > 30
.⚙️ Порядок выполнения СУБД (не как в коде!):
1.
FROM
и JOIN
2.
WHERE
3.
GROUP BY
4.
HAVING
5.
SELECT
6.
ORDER BY
7.
LIMIT
📌 То есть сначала СУБД соединяет таблицы, потом фильтрует, группирует, считает, сортирует и только потом возвращает результат.
🧠 SQL — декларативный язык. Ты описываешь, что хочешь получить, а не как это сделать.
🔗 Полная статья
👍16❤5🔥2😁2🤨1💊1
Forwarded from Python/ django
Transfunctions — это инструмент для создания чистых, переиспользуемых и управляемых пайплайнов из функций. Подходит для задач, где нужно чётко контролировать каждый шаг выполнения.
Что такое транзакционные функции?
Это функции, которые:
• имеют чёткое начало и откат (rollback) — как в базах данных
• могут быть объединены в цепочки, где каждая часть знает, как отменить свои действия
• обрабатывают ошибки и контекст централизованно
• позволяют писать бизнес-логику без дублирования и хаоса
Что умеет Transfunctions:
• Объединение функций в контролируемые пайплайны
• Поддержка отката и логирования
• Контекстное выполнение (например, сессии, транзакции, данные)
• Минимум шаблонного кода
Подходит для ETL, финансовых операций, инфраструктурных обработчиков и сценариев с проверками и откатами.
pip install transfunctions
🔗 GitHub: https://github.com/pomponchik/transfunctions
#python #pipeline #transactions #opensource #architecture
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2
🚀 УСКОРЕНИЕ ТРАНЗАКЦИЙ В SQL ЧЕРЕЗ BATCHING !
Ускоряй SQL-транзакции с помощью batched inserts/updates и минимизации количества round‑trip'ов
Одна из главных причин медленных транзакций — множество отдельных запросов. Каждый INSERT или UPDATE — это отдельная поездка в базу (round-trip), которая стоит времени и ресурсов.
Решение: объединяй операции в батчи, используй
Пример:
📌 Преимущества:
– Меньше сетевых вызовов
– Лучше используется план выполнения
– Меньше блокировок и нагрузка на транзакционный лог
Ускоряй SQL-транзакции с помощью batched inserts/updates и минимизации количества round‑trip'ов
Одна из главных причин медленных транзакций — множество отдельных запросов. Каждый INSERT или UPDATE — это отдельная поездка в базу (round-trip), которая стоит времени и ресурсов.
Решение: объединяй операции в батчи, используй
VALUES (...), (...), (...)
или CASE WHEN
для обновлений.Пример:
-- Вместо этого (медленно):
INSERT INTO logs (user_id, action) VALUES (1, 'login');
INSERT INTO logs (user_id, action) VALUES (2, 'logout');
INSERT INTO logs (user_id, action) VALUES (3, 'login');
-- Делай так (быстрее):
INSERT INTO logs (user_id, action)
VALUES
(1, 'login'),
(2, 'logout'),
(3, 'login');
-- Аналогично для обновлений:
UPDATE accounts
SET balance = CASE user_id
WHEN 1 THEN 100
WHEN 2 THEN 200
WHEN 3 THEN 300
END
WHERE user_id IN (1, 2, 3);
📌 Преимущества:
– Меньше сетевых вызовов
– Лучше используется план выполнения
– Меньше блокировок и нагрузка на транзакционный лог
👍15🔥4❤2
🧠 Условие:
Есть таблица
orders
:| id | customer_id | total |
|----|-------------|--------|
| 1 | A | 100.00 |
| 2 | A | 200.00 |
| 3 | B | 150.00 |
| 4 | B | 300.00 |
| 5 | C | 400.00 |
Нужно выбрать заказ с максимальной суммой (`total`) для каждого клиента.
Вы пишете:
SELECT customer_id, MAX(total)
FROM orders
GROUP BY customer_id;
✅ Работает? Да. Но теперь вы хотите вернуть всю строку заказа с максимальной суммой — включая id.
Вы пишете:
SELECT *
FROM orders
GROUP BY customer_id
HAVING total = MAX(total);
❌ Ошибка. Или — неожиданные результаты.
📌 Подвох: нельзя использовать HAVING total = MAX(total) без подзапроса.
MAX — агрегат, а total вне GROUP BY — это ошибка или неопределённость.
✅ Правильное решение — с подзапросом:
SELECT o.*
FROM orders o
JOIN (
SELECT customer_id, MAX(total) AS max_total
FROM orders
GROUP BY customer_id
) t ON o.customer_id = t.customer_id AND o.total = t.max_total;
💡 Такое решение:
🧠 Вывод:
Нельзя просто так использовать MAX() и при этом возвращать столбцы вне GROUP BY.
Для этого всегда нужен JOIN с агрегатом или window-функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1💊1
Внутри — 4 модуля, разбитые по сложности:
📌 Ссылка тут: https://mode.com/sql-tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2🥰1