This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Как убрать дубликаты в SQL с использованием временной таблицы.
Чтобы убрать все дубликаты данных в таблице, важно использовать временную таблицу для сохранения уникальных записей, а затем обновить оригинальную таблицу. Это поможет избежать потенциальных проблем при работе с большим объемом данных и обеспечит целостность.
Чтобы убрать все дубликаты данных в таблице, важно использовать временную таблицу для сохранения уникальных записей, а затем обновить оригинальную таблицу. Это поможет избежать потенциальных проблем при работе с большим объемом данных и обеспечит целостность.
-- Создание временной таблицы с уникальными записями
CREATE TABLE temp_unique AS
SELECT DISTINCT *
FROM your_table;
-- Удаление всех записей из оригинальной таблицы
DELETE FROM your_table;
-- Вставка уникальных данных обратно в оригинальную таблицу
INSERT INTO your_table
SELECT *
FROM temp_unique;
-- Удаление временной таблицы
DROP TABLE temp_unique;
❤10👍3🔥1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Иногда самая коварная задача - найти “покупали 3 дня подряд”. Профи часто делают self-join на даты, но он ломается на дубликатах, таймзонах и нескольких покупках в день.
Подвох: нужно считать не покупки, а уникальные дни, и правильно собрать последовательности без дыр. Решение выглядит просто, но без оконных функций легко ошибиться.
-- Задача:
-- Найти пользователей, которые совершали покупку 3 календарных дня подряд (минимум).
-- Условия:
-- 1) В один день может быть много покупок - считаем день один раз.
-- 2) Нужны именно подряд идущие дни без пропусков.
-- 3) Вернуть user_id и начало/конец самой длинной серии.
WITH days AS (
SELECT DISTINCT
user_id,
DATE(created_at) AS d
FROM orders
),
grp AS (
SELECT
user_id,
d,
-- трюк: для подряд идущих дат разность (дата - номер) постоянна
DATEADD(day, -ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY d), d) AS g
FROM days
),
streaks AS (
SELECT
user_id,
MIN(d) AS streak_start,
MAX(d) AS streak_end,
COUNT(*) AS streak_len
FROM grp
GROUP BY user_id, g
)
SELECT user_id, streak_start, streak_end, streak_len
FROM streaks
WHERE streak_len >= 3
ORDER BY streak_len DESC;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😍2❤1
Google переименовал ZetaSQL в GoogleSQL
Компания Google объявила о переименовании SQL-анализатора ZetaSQL в GoogleSQL. Проект развивает инструментарий для разбора и анализа грамматики, семантики, типов, модели данных и функций для языка SQL и диалекта GoogleSQL. Диалект GoogleSQL примечателен возможностью объединения запросов при помощи неименованных каналов (pipe) и применяется в различных продуктах и сервисах Google, среди которых BigQuery, Spanner, F1, BigTable, Dremel и Procella. Код проекта написан на языке С++ и распространяется под лицензией Apache 2.0.
https://opennet.ru/64735/
Компания Google объявила о переименовании SQL-анализатора ZetaSQL в GoogleSQL. Проект развивает инструментарий для разбора и анализа грамматики, семантики, типов, модели данных и функций для языка SQL и диалекта GoogleSQL. Диалект GoogleSQL примечателен возможностью объединения запросов при помощи неименованных каналов (pipe) и применяется в различных продуктах и сервисах Google, среди которых BigQuery, Spanner, F1, BigTable, Dremel и Procella. Код проекта написан на языке С++ и распространяется под лицензией Apache 2.0.
https://opennet.ru/64735/
👍3❤1🔥1
Ты научишься делать те, которые живут в проде.
Это не про BeautifulSoup ради галочки.
Это про системы сбора данных, которые:
• не падают от мелких правок на сайте
• собирают данные в разы быстрее
• обновляют всё сами по расписанию
• обходят ограничения и баны
• выглядят как сервис, а не хаос из файлов
Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться.
В итоге ты сможешь:
• забирать данные для своих проектов
• автоматизировать чужую рутину
• делать инструменты для аналитики
• брать коммерческие заказы на сбор данных
Это навык, который напрямую превращается в деньги.
Не “знаю Python”, а умею добывать данные из интернета профессионально.
🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1😁1
Какой из перечисленных типов индексов в PostgreSQL подходит для геопространственных данных?
Anonymous Quiz
10%
B-tree
8%
Hash
51%
GiST
11%
GIN
5%
BRIN
15%
SP-GiST
1❤2👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Главная ошибка при работе с большими таблицами - делать SELECT * и потом надеяться, что "оно как-нибудь".
На больших объёмах это превращается в долгие запросы, высокую нагрузку и таймауты.
Правильный подход другой: всегда сначала сузь выборку, отрежь лишние строки по времени или по ключу, выбери только нужные колонки и агрегируй как можно раньше.
Практическое правило: если запрос возвращает миллионы строк - ты почти наверняка решаешь задачу неправильно. В 90% случаев тебе нужна витрина: GROUP BY, window-функции, или отдельная агрегированная таблица. А чтобы база не страдала, добавляй индексы под фильтры и под JOIN-ключи, и проверяй план выполнения через EXPLAIN.
ПЛОХО: тащим весь объём и только потом думаем
SELECT *
FROM events
WHERE created_at >= NOW() - INTERVAL '90 days';
-- ХОРОШО: сразу сужаем, берем нужные колонки, считаем агрегаты
SELECT
user_id,
COUNT(*) AS events_7d,
MAX(created_at) AS last_event_at
FROM events
WHERE created_at >= NOW() - INTERVAL '7 days'
GROUP BY user_id;
-- Индекс под фильтр по времени + join по user_id (частый паттерн)
CREATE INDEX IF NOT EXISTS idx_events_created_user
ON events (created_at, user_id);
-- Проверяй план, чтобы не было Seq Scan на миллионах строк
EXPLAIN (ANALYZE, BUFFERS)
SELECT user_id, COUNT(*)
FROM events
WHERE created_at >= NOW() - INTERVAL '7 days'
GROUP BY user_id;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥4
Как MySQL обрабатывает запрос с использованием GROUP BY и столбцами, не входящими в агрегатные функции и не перечисленными в GROUP BY?
Anonymous Quiz
45%
Возвращает ошибку синтаксиса
12%
Возвращает произвольное значение из группы для таких столбцов
15%
Автоматически добавляет все столбцы в GROUP BY
28%
Игнорирует такие столбцы в результате
🤯9😁1
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇
🖥 ИИ: t.me/ai_machinelearning_big_data
🖥 Python: t.me/pythonl
🖥 Linux: t.me/linuxacademiya
🖥 C++ t.me/cpluspluc
🖥 Docker: t.me/DevopsDocker
🖥 Хакинг: t.me/linuxkalii
🖥 Devops: t.me/DevOPSitsec
👣 Golang: t.me/Golang_google
🖥 Аналитика: t.me/data_analysis_ml
🖥 Javascript: t.me/javascriptv
🖥 C#: t.me/csharp_ci
🖥 Java: t.me/javatg
🖥 Базы данных: t.me/sqlhub
👣 Rust: t.me/rust_code
🤖 Технологии: t.me/vistehno
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
🖥 Chatgpt бот в тг: t.me/Chatgpturbobot
📚 Бесплатные ит-книги: https://xn--r1a.website/addlist/HwywK4fErd8wYzQy
🖥 Подборка по Golang: https://xn--r1a.website/addlist/MUtJEeJSxeY2YTFi
⚡️ Лучшие ИИ ресурсы: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
💰 Экономика и инвестиции в ИИ t.me/financeStable
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
📚 Бесплатные ит-книги: https://xn--r1a.website/addlist/HwywK4fErd8wYzQy
⚡️ Лучшие ИИ ресурсы: https://xn--r1a.website/addlist/2Ls-snqEeytkMDgy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1
Какой тип индекса MySQL лучше всего подходит для геопространственных данных?
Anonymous Quiz
29%
BTREE
21%
HASH
43%
SPATIAL
8%
FULLTEXT
👍2
Это полноценный учебник + практика в одном месте.
Что внутри:
- База без воды
SELECT, WHERE, ORDER BY, LIMIT, условия и логика запросов
- Продвинутые темы
агрегатные функции, GROUP BY, HAVING, подзапросы, JOIN’ы
- Много практики
упражнения и задачи, чтобы довести работу с БД до автоматизма
- Подробные объяснения
материал подойдёт даже тем, кто никогда не работал с базами данных
Почему это полезно:
SQL — один из самых универсальных навыков в IT.
Он нужен разработчикам, аналитикам, data-инженерам и всем, кто работает с данными.
Этот репозиторий даёт именно то, что нужно для реальной работы:
- понимание, как устроены запросы
- уверенную работу с данными
- базу для перехода к аналитике или backend-разработке
GitHub: https://github.com/dwyl/learn-postgresql
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
SQL Academy
Интерактивный тренажер по SQL — SQL Academy
Бесплатный интерактивный онлайн тренажер с упражнениями для оттачивания навыков работы с SQL. Задания по SQL с фильтрацией по сложности и типу. Задачи с реальных собеседований (интервью) в лучшие компании, таких как Сбербанк, VK, Альфа-банк и других. Тренажер…
👍10🔥5
Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи.
В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL:
от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями.
🔹 На практике разберете:
• SQL-запросы, фильтры, агрегаты и подзапросы
• Связи между таблицами и нормализацию БД
• Взаимодействие Python и PostgreSQL
• Реализацию REST API и подключение базы
• Оптимизацию и разбор реальных задач с собеседований
⚡ После курса у вас будет свой работающий API-проект и реальные навыки работы с PostgreSQL в продакшене.
🎁 Торопись пока действует скидка в честь нвого года!
🚀 Прокачаю свои знания: https://stepik.org/course/255542/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥱2👍1🔥1
Какой тип индекса в MySQL лучше всего подходит для ускорения поиска по диапазону значений?
Anonymous Quiz
49%
BTREE
31%
HASH
9%
FULLTEXT
12%
SPATIAL
sql-basics-cheat-sheet-a4.pdf
120.5 KB
#sql #doc #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1😁1
⚡️ Маленькая модель - большие возможности.
Вышла Nanbeige4.1-3B - модель всего на 3B параметров, которая в ряде задач обходит модели в 10 раз больше.
Что внутри:
- Контекст до 256K токенов
- Встроенные агентные возможности Deep Search
- Обучение коду в два этапа:
- сначала правильность
- затем эффективность
- На ключевых бенчмарках обгоняет Qwen3-32B
- Можно запускать локально без мощных серверов
- Сильно ниже стоимость инференса
- Быстрая работа на edge и локальных машинах
- Подходит для локальных AI-агентов и автоматизации
Дешёвый Локальный AI.
Модель:
https://modelscope.cn/models/nanbeige/Nanbeige4.1-3B
Вышла Nanbeige4.1-3B - модель всего на 3B параметров, которая в ряде задач обходит модели в 10 раз больше.
Что внутри:
- Контекст до 256K токенов
- Встроенные агентные возможности Deep Search
- Обучение коду в два этапа:
- сначала правильность
- затем эффективность
- На ключевых бенчмарках обгоняет Qwen3-32B
- Можно запускать локально без мощных серверов
- Сильно ниже стоимость инференса
- Быстрая работа на edge и локальных машинах
- Подходит для локальных AI-агентов и автоматизации
Дешёвый Локальный AI.
Модель:
https://modelscope.cn/models/nanbeige/Nanbeige4.1-3B
❤6👍3🔥2
⚡ sqlc — пишешь SQL, получаешь типобезопасный Go-код
Если работаешь с Go и базой данных, есть инструмент, который экономит часы и убирает целый класс ошибок.
Что делает sqlc:
- Пишешь обычные SQL-запросы
- sqlc проверяет их по твоей схеме БД
- Генерирует готовый Go-код:
- структуры
- методы
- типы
Главный плюс:
Ошибки ловятся на этапе компиляции, а не в продакшене.
Например:
- обращение к несуществующей колонке
- несовпадение типов
- нарушение схемы
Без runtime-сюрпризов.
Почему это важно:
- Никакого ручного маппинга
- Полная типобезопасность
- Чистый и предсказуемый код
- Производительность лучше, чем у ORM
- Полный контроль над SQL
sqlc — это баланс между:
удобством ORM
и контролем сырого SQL.
Если пишешь сервисы на Go с PostgreSQL или MySQL —
это один из самых практичных инструментов в продакшене.
GitHub: https://github.com/sqlc-dev/sqlc
Если работаешь с Go и базой данных, есть инструмент, который экономит часы и убирает целый класс ошибок.
Что делает sqlc:
- Пишешь обычные SQL-запросы
- sqlc проверяет их по твоей схеме БД
- Генерирует готовый Go-код:
- структуры
- методы
- типы
Главный плюс:
Ошибки ловятся на этапе компиляции, а не в продакшене.
Например:
- обращение к несуществующей колонке
- несовпадение типов
- нарушение схемы
Без runtime-сюрпризов.
Почему это важно:
- Никакого ручного маппинга
- Полная типобезопасность
- Чистый и предсказуемый код
- Производительность лучше, чем у ORM
- Полный контроль над SQL
sqlc — это баланс между:
удобством ORM
и контролем сырого SQL.
Если пишешь сервисы на Go с PostgreSQL или MySQL —
это один из самых практичных инструментов в продакшене.
GitHub: https://github.com/sqlc-dev/sqlc
👍7🔥2❤1
MiniMax-2.5 теперь можно запускать локально 🚀
Модель на 230B параметров - одна из самых мощных среди LLM меньше 700B. Она показывает топовые результаты в агентных задачах, программировании и диалогах.
• Поддерживается динамическая 3/4-битная квантизация
• Можно запустить на Mac с 128 GB RAM
• Скорость - около 20 токенов/сек
Подходит для локальных AI-агентов, кодинга и приватной работы без облака
Это ещё один шаг к тому, что мощные модели постепенно переезжают с дата-центров на локальные машины.
Guide: https://unsloth.ai/docs/models/minimax-2.5
GGUF: https://huggingface.co/unsloth/MiniMax-M2.5-GGUF
Модель на 230B параметров - одна из самых мощных среди LLM меньше 700B. Она показывает топовые результаты в агентных задачах, программировании и диалогах.
• Поддерживается динамическая 3/4-битная квантизация
• Можно запустить на Mac с 128 GB RAM
• Скорость - около 20 токенов/сек
Подходит для локальных AI-агентов, кодинга и приватной работы без облака
Это ещё один шаг к тому, что мощные модели постепенно переезжают с дата-центров на локальные машины.
Guide: https://unsloth.ai/docs/models/minimax-2.5
GGUF: https://huggingface.co/unsloth/MiniMax-M2.5-GGUF
❤3🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Самая опасная ошибка при миграции в SQL - делать всё сразу.
Большинство разработчиков и аналитиков при изменении структуры таблицы сразу добавляют NOT NULL или удаляют колонку.
Проблема в том, что на продакшене это может:
заблокировать таблицу
положить сервис
или сорвать релиз.
Правильный подход — делать миграцию по шагам.
Сначала добавляешь новую колонку без ограничений.
Потом постепенно заполняешь данные.
И только после этого добавляешь NOT NULL.
Так работают команды, которые не ломают прод.
-- Шаг 1. Добавляем колонку без ограничений
ALTER TABLE users
ADD COLUMN status TEXT;
-- Шаг 2. Заполняем постепенно (можно батчами)
UPDATE users
SET status = 'active'
WHERE status IS NULL;
-- Шаг 3. Добавляем ограничение только после заполнения
ALTER TABLE users
ALTER COLUMN status SET NOT NULL;
Большинство разработчиков и аналитиков при изменении структуры таблицы сразу добавляют NOT NULL или удаляют колонку.
Проблема в том, что на продакшене это может:
заблокировать таблицу
положить сервис
или сорвать релиз.
Правильный подход — делать миграцию по шагам.
Сначала добавляешь новую колонку без ограничений.
Потом постепенно заполняешь данные.
И только после этого добавляешь NOT NULL.
Так работают команды, которые не ломают прод.
-- Шаг 1. Добавляем колонку без ограничений
ALTER TABLE users
ADD COLUMN status TEXT;
-- Шаг 2. Заполняем постепенно (можно батчами)
UPDATE users
SET status = 'active'
WHERE status IS NULL;
-- Шаг 3. Добавляем ограничение только после заполнения
ALTER TABLE users
ALTER COLUMN status SET NOT NULL;
👍11🔥4❤3👌2💊1
У вас есть таблицы views (посещения) и purchases (покупки). Как найти пользователей, которые просмотрели товары, но ничего не купили?
Anonymous Quiz
7%
A) SELECT user_id FROM views EXCEPT SELECT user_id FROM purchases;
28%
B) SELECT user_id FROM views WHERE user_id NOT IN (SELECT user_id FROM purchases);
21%
C) SELECT user_id FROM views LEFT JOIN purchases USING (user_id) WHERE purchases.user_id IS NULL;
43%
D) Все вышеперечисленные варианты приведут к одному результату.
👍10💊2
Forwarded from Machinelearning
YouTube и Google DeepMind опубликовали статью и код фреймворка STATIC.
Проблема, которую он решает, хорошо знакома всем, кто строит рекомендательные системы на базе LLM: модель генерирует идентификаторы позиций, которых нет в каталоге, вышли из продажи или нарушают бизнес-правила. Именно поэтому YouTube выдает старые видео в ленте там, где должны появляться ролики последней недели.
Очевидное решение - префиксное дерево: на каждом шаге декодирования маска блокирует невалидные токены. Работает в целом нормально, но убивает производительность на TPU и GPU. Причины две:
В итоге префиксное дерево на CPU удваивает время инференса, что для системы с целевой задержкой ≤10 мс на шаг неприемлемо.
STATIC меняет подход принципиально: дерево разворачивается в статическую разреженную матрицу формата Compressed Sparse Row. Обход превращается в векторизованную операцию, которую акселератор умеет выполнять нативно.
Для первых двух уровней дерева, где коэффициент ветвления максимален, используется предвычисленная плотная булева маска: проверка валидности токена сводится к прямому обращению по индексу, без какого-либо перебора.
Для глубоких уровней работает специализированное ядро Vectorized Node Transition Kernel, оно читает фиксированный блок данных вне зависимости от реального числа дочерних узлов, не создавая условных переходов. В этом и есть вся соль: весь граф остается статическим, XLA не перекомпилирует ничего на ходу.
Замеры проводили на TPU v6e с 3B-моделью и словарем из 20 млн. свежих видео.
STATIC добился задержки 0,033 мс на шаг декодирования (это всего 0,25% от общего времени инференса.
Для сравнения: префиксное дерево на CPU давало +31,3 мс (239% от инференса), лучший из конкурирующих методов непосредственно на акселераторе, PPV Approximate +1,56 мс (11,9%). Итоговый профит:🟢 948x против дерева на CPU;🟢 47x против PPV Approximate;🟢 1033x против точного PPV.
По памяти: ~90 МБ на 1 млн. элементов. Для словаря в 20 млн. верхний предел по HBM примерно 1,5 ГБ, на практике - около 75% от этого значения.
A/B-тест с условием «только видео за последние 7 дней» показал +5,1% просмотров свежего контента, +2,9% для трехдневного окна, +0,15% по CTR и 100% соответствие бизнес-правилам.
Дополнительный бонус: метод решает проблему рекомендации новых товаров, не представленных в обучающей выборке. На датасете Amazon Reviews Recall@1 вырос с 0% до 1,2–4,4% в зависимости от категории.
В репозитории лежит ноутбук, на котором без утомительной настройки можно сразу посмотреть, как строится индекс из Semantic ID и как запускается декодирование с ограничениями.
@ai_machinelearning_big_data
#AI #ML #LLM #STATIC #DeepMind
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2