Forwarded from Data Science. SQL hub
SQL_cheatsheet.pdf
754.9 KB
⚡️ SQL-шпаргалка, которая выручит в интервью, проекте и проде
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
❤5👍5🔥1🤨1
🧩 SQL-задача с подвохом: "Сотрудники без продаж в 2024 году"
У тебя есть две таблицы:
📌 Задание:
Найди всех сотрудников, у которых не было ни одной продажи в 2024 году.
💣 **Подвох:**
Многие делают
А нужно — у кого не было продаж именно в 2024 году, даже если они были в 2023 или 2022.
💡 **Подсказки:**
• Отфильтруй
• Используй
• Ищи
---
✅ Решение с `LEFT JOIN`:
```sql
SELECTe.name
FROM employees e
LEFT JOIN (
SELECT * FROM sales
WHERE sale_date >= '2024-01-01' AND sale_date < '2025-01-01'
) s ONe.id = s.employee_id
WHERE s.id IS NULL;
```
---
🔄 **Альтернатива с `NOT EXISTS`:**
```sql
SELECT name
FROM employees e
WHERE NOT EXISTS (
SELECT 1
FROM sales s
WHERE s.employee_id = e.id
AND s.sale_date >= '2024-01-01'
AND s.sale_date < '2025-01-01'
);
```
---
🎯 Отличная задача, чтобы понять, **где правильно ставить фильтрацию по дате**, и чем `LEFT JOIN` отличается от `NOT EXISTS`.
У тебя есть две таблицы:
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR
);
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
employee_id INT,
sale_amount NUMERIC,
sale_date DATE
);
📌 Задание:
Найди всех сотрудников, у которых не было ни одной продажи в 2024 году.
💣 **Подвох:**
Многие делают
LEFT JOIN sales ON ... WHERE sale.id IS NULL, но это покажет только тех, у кого вообще не было продаж. А нужно — у кого не было продаж именно в 2024 году, даже если они были в 2023 или 2022.
💡 **Подсказки:**
• Отфильтруй
sales по дате (`2024-01-01` до `2024-12-31`) • Используй
LEFT JOIN или NOT EXISTS • Ищи
NULL только после фильтра---
✅ Решение с `LEFT JOIN`:
```sql
SELECT
FROM employees e
LEFT JOIN (
SELECT * FROM sales
WHERE sale_date >= '2024-01-01' AND sale_date < '2025-01-01'
) s ON
WHERE
```
---
🔄 **Альтернатива с `NOT EXISTS`:**
```sql
SELECT name
FROM employees e
WHERE NOT EXISTS (
SELECT 1
FROM sales s
WHERE s.employee_id =
AND s.sale_date >= '2024-01-01'
AND s.sale_date < '2025-01-01'
);
```
---
🎯 Отличная задача, чтобы понять, **где правильно ставить фильтрацию по дате**, и чем `LEFT JOIN` отличается от `NOT EXISTS`.
👍10🔥8😁2❤1🤨1
🧠 SkyRL-SQL — лёгкий RL-подход для Text-to-SQL от NovaSky, который превзошёл GPT-4o и o4-mini, обучаясь всего на 653 примерах!
📌 Что это:
SkyRL-SQL — это эффективный RL-фреймворк для генерации SQL-запросов из текста.
Модель
📊 Результаты на Spider-бенчмарках:
🔍 Особенности:
• RL-обучение по шагам с интерактивной проверкой
• Поддержка уточнения SQL на основе ошибок
• Обучение всего на 653 примерах
• Превосходит более крупные модели на практике
GitHub: https://github.com/NovaSky-AI/SkyRL
Блог: https://novasky-ai.github.io/posts/skyrl-sql
🧪 Отличный пример того, как можно бить гигантов с умной архитектурой, а не только размерами.
📌 Github
📌 Что это:
SkyRL-SQL — это эффективный RL-фреймворк для генерации SQL-запросов из текста.
Модель
SkyRL-SQL-7B обучена с нуля с использованием обучения с подкреплением (reinforcement learning), без гигантских датасетов.📊 Результаты на Spider-бенчмарках:
| Модель | Spider-Dev | Spider-Test | Realistic | DK | Syn | Среднее |
|--------------------|------------|-------------|-----------|------|------|---------|
| GPT-4o | 81.3 | 82.4 | 80.1 | 72.1 | 71.9 | 77.6 |
| o4-mini | 80.6 | 81.8 | 81.2 | 70.8 | 72.1 | 77.3 |
| **SkyRL-SQL-7B** | **83.9** | **85.2** | **81.1** | 72.0 | 73.7 | **79.2** |🔍 Особенности:
• RL-обучение по шагам с интерактивной проверкой
• Поддержка уточнения SQL на основе ошибок
• Обучение всего на 653 примерах
• Превосходит более крупные модели на практике
GitHub: https://github.com/NovaSky-AI/SkyRL
Блог: https://novasky-ai.github.io/posts/skyrl-sql
🧪 Отличный пример того, как можно бить гигантов с умной архитектурой, а не только размерами.
📌 Github
👍5❤4🔥2
Forwarded from Data Science. SQL hub
🛠️ Что нового в SQLite — свежие обновления и улучшения
🔗 https://www.sqlite.org/changes.html
SQLite — одна из самых популярных встраиваемых баз данных в мире, и каждое обновление приносит не только исправления, но и серьёзные улучшения производительности и безопасности.
Вот ключевые изменения из последних версий:
🆕 SQLite 3.46.0 (май 2024)
- Добавлена поддержка
- Новый флаг
- Оптимизации для
- Улучшено поведение
🧪 Расширенные тесты:
- SQLite теперь использует дополнительный fuzzing для анализа стабильности ядра при высоких нагрузках и необычных SQL
🧹 Также исправлены:
- Ошибки в индексах при сложной комбинации
- Утечка памяти при специфическом использовании
💡 SQLite остаётся одной из самых лёгких, надёжных и удобных баз данных, которую можно использовать буквально везде: от браузеров и мобильных приложений до IoT и CLI-утилит.
📚 Полный список изменений — здесь:
https://www.sqlite.org/changes.html
@sqlhub
🔗 https://www.sqlite.org/changes.html
SQLite — одна из самых популярных встраиваемых баз данных в мире, и каждое обновление приносит не только исправления, но и серьёзные улучшения производительности и безопасности.
Вот ключевые изменения из последних версий:
🆕 SQLite 3.46.0 (май 2024)
- Добавлена поддержка
contentless-delete для таблиц FTS5 — меньше места, выше скорость - Новый флаг
SQLITE_DBCONFIG_STMT_SCANSTATUS — можно отключать сбор статистики по выполнению запросов - Оптимизации для
LEFT JOIN + OR условий в WHERE — запросы выполняются заметно быстрее - Улучшено поведение
WITHOUT ROWID таблиц с составными ключами🧪 Расширенные тесты:
- SQLite теперь использует дополнительный fuzzing для анализа стабильности ядра при высоких нагрузках и необычных SQL
🧹 Также исправлены:
- Ошибки в индексах при сложной комбинации
JOIN + USING - Утечка памяти при специфическом использовании
PRAGMA function_list💡 SQLite остаётся одной из самых лёгких, надёжных и удобных баз данных, которую можно использовать буквально везде: от браузеров и мобильных приложений до IoT и CLI-утилит.
📚 Полный список изменений — здесь:
https://www.sqlite.org/changes.html
@sqlhub
❤3👍3🔥2🤨1
🔥 CTE + DELETE — это комбинация общего табличного выражения (Common Table Expression, CTE) и оператора DELETE, которая позволяет удобно удалять строки из таблицы, особенно в случаях, когда удаление зависит от сложного подзапроса или JOIN-ов.
🔍 Что такое CTE?
CTE (WITH выражение) — это временный набор данных, определённый перед основным SQL-запросом.
🧹 Зачем использовать CTE с DELETE?
Упрощает чтение и понимание кода при сложных условиях.
Позволяет использовать JOIN, ROW_NUMBER() и другие функции перед удалением.
Избавляет от подзапросов в WHERE, которые иногда трудно читать.
📌 Пример: Удалить дубликаты по email, оставив только один
🧠 Здесь:
CTE duplicates присваивает каждой строке номер внутри группы одинаковых email.
Удаляем все строки, где rn > 1 — то есть дубликаты.
📌 Пример: Удаление с JOIN
📌 Поддержка:
Работает в PostgreSQL, SQL Server, Oracle (с USING или WITH).
В MySQL с 8.0+ CTE поддерживаются, но DELETE с CTE может потребовать подзапрос.
🔍 Что такое CTE?
CTE (WITH выражение) — это временный набор данных, определённый перед основным SQL-запросом.
🧹 Зачем использовать CTE с DELETE?
Упрощает чтение и понимание кода при сложных условиях.
Позволяет использовать JOIN, ROW_NUMBER() и другие функции перед удалением.
Избавляет от подзапросов в WHERE, которые иногда трудно читать.
📌 Пример: Удалить дубликаты по email, оставив только один
WITH duplicates AS (
SELECT id,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
FROM users
)
DELETE FROM users
WHERE id IN (
SELECT id FROM duplicates WHERE rn > 1
);
🧠 Здесь:
CTE duplicates присваивает каждой строке номер внутри группы одинаковых email.
Удаляем все строки, где rn > 1 — то есть дубликаты.
📌 Пример: Удаление с JOIN
WITH to_delete AS (
SELECT u.id
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.status = 'cancelled'
)
DELETE FROM users
WHERE id IN (SELECT id FROM to_delete);
📌 Поддержка:
Работает в PostgreSQL, SQL Server, Oracle (с USING или WITH).
В MySQL с 8.0+ CTE поддерживаются, но DELETE с CTE может потребовать подзапрос.
👍12❤7😁2💊2🔥1
⚡️ RushDB — это мгновенная база данных, построенная на базе Neo4j, не требующая моделирования, конфигураций, нормализаций данных и идеально подходит для разработки приложений, DS/ML Ops и быстрого прототипирования.
🌟 Принимает любые данные формате JSON, JSONB и CSV, и самостоятельно нормализует данные, создавая связи между данными, расставляет типы данных и лэйблы на основе передаваемых данных.
☁️ Доступна в облаке и селф-хостед.
🛠 API-first и удобные SDK для разработчиков: Python и TypeScript
🚀 Отлично подходит для стартапов, AI-команд и всех, кто работает с графами
🔐 Лицензия: Apache-2.0
🟢 GitHub
🟢 Website
📖Docs
🌟 Принимает любые данные формате JSON, JSONB и CSV, и самостоятельно нормализует данные, создавая связи между данными, расставляет типы данных и лэйблы на основе передаваемых данных.
☁️ Доступна в облаке и селф-хостед.
🛠 API-first и удобные SDK для разработчиков: Python и TypeScript
🚀 Отлично подходит для стартапов, AI-команд и всех, кто работает с графами
🔐 Лицензия: Apache-2.0
📖Docs
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5❤4👍2🔥1
🚀 Вышел стабильный релиз MariaDB 11.8.2 — первая стабильная версия новой ветки с долгосрочной поддержкой (LTS, 5 лет). Также доступен предварительный релиз MariaDB 12.0.1.
🔹 Что нового в 11.8 по сравнению с предыдущим LTS 11.4:
🧠 Векторный поиск
Добавлены возможности из проекта *MariaDB Vector*:
• Новый тип данных
• Функции для сравнения векторов:
• Поддержка SIMD-ускорений: AVX2/AVX512, ARM, Power10
• Производительность векторных запросов выше Redis, pgvector, qdrant и weaviate
🧭 Поддержка времени до 2106 года
Решена проблема 2038 — TIMESTAMP теперь работает до 2106 года
🌍 Новая кодировка и локаль
По умолчанию теперь
Обновлены правила сортировки (Collation) до UCA 14.0.0
🔐 Новый механизм аутентификации: PARSEC
• PBKDF2 + ed25519
• Безопасная верификация пароля
💾 Многопоточность в дампе и импорте
•
• Поддержка резервного копирования как одной, так и нескольких БД
📈 Ускоренная репликация
• Новый механизм binlog-сегментации
• Асинхронный rollback после сбоев
• Параметр
🛠️ Новые фичи и команды
• Таблица
• Команды
• Возврат значений типа
• Поддержка Oracle-подобных SEQUENCE
• Функции
•
• Ограничения на размер временных файлов (`max_tmp_session_space_usage`, `max_tmp_total_space_usage`)
⚙️ Оптимизации
• Ускоренные
• Улучшена работа с виртуальными столбцами
• Авто-оптимизация кодировок
💡 Контекст
MariaDB — форк MySQL, с дополнительными хранилищами и расширенными возможностями, не зависящий от Oracle. Используется в RHEL, SUSE, Fedora, Debian, Arch и проектах вроде Wikipedia и Google Cloud SQL.
📌 Если вы работаете с векторным поиском, большими БД или вам важно долгосрочное сопровождение — MariaDB 11.8 теперь must-have.
https://mariadb.com/kb/en/mariadb-11-4-2-release-notes/
🔹 Что нового в 11.8 по сравнению с предыдущим LTS 11.4:
🧠 Векторный поиск
Добавлены возможности из проекта *MariaDB Vector*:
• Новый тип данных
VECTOR • Функции для сравнения векторов:
VEC_DISTANCE_EUCLIDEAN(), VEC_DISTANCE_COSINE(), VEC_DISTANCE() • Поддержка SIMD-ускорений: AVX2/AVX512, ARM, Power10
• Производительность векторных запросов выше Redis, pgvector, qdrant и weaviate
🧭 Поддержка времени до 2106 года
Решена проблема 2038 — TIMESTAMP теперь работает до 2106 года
🌍 Новая кодировка и локаль
По умолчанию теперь
utf8mb4, полная поддержка emoji Обновлены правила сортировки (Collation) до UCA 14.0.0
🔐 Новый механизм аутентификации: PARSEC
• PBKDF2 + ed25519
• Безопасная верификация пароля
💾 Многопоточность в дампе и импорте
•
mariadb-dump и mariadb-import теперь используют многопоточность • Поддержка резервного копирования как одной, так и нескольких БД
📈 Ускоренная репликация
• Новый механизм binlog-сегментации
• Асинхронный rollback после сбоев
• Параметр
slave_replication_delay_abort_timeout для отмены "зависших" транзакций🛠️ Новые фичи и команды
• Таблица
USERS для контроля доступа • Команды
FLUSH GLOBAL STATUS, REPAIR TABLE ... FORCE, SHOW CREATE SERVER • Возврат значений типа
ROW из хранимых процедур • Поддержка Oracle-подобных SEQUENCE
• Функции
UUID_v4, UUID_v7 •
FORMAT_BYTES(1000000000) = 953.67 MiB • Ограничения на размер временных файлов (`max_tmp_session_space_usage`, `max_tmp_total_space_usage`)
⚙️ Оптимизации
• Ускоренные
UPDATE/DELETE, SUBSTR(...) = const • Улучшена работа с виртуальными столбцами
• Авто-оптимизация кодировок
💡 Контекст
MariaDB — форк MySQL, с дополнительными хранилищами и расширенными возможностями, не зависящий от Oracle. Используется в RHEL, SUSE, Fedora, Debian, Arch и проектах вроде Wikipedia и Google Cloud SQL.
📌 Если вы работаете с векторным поиском, большими БД или вам важно долгосрочное сопровождение — MariaDB 11.8 теперь must-have.
https://mariadb.com/kb/en/mariadb-11-4-2-release-notes/
👍7❤2🥰2👀1
🎙️ ElevenLabs представила свою новую модель синтеза речи v3, которая стирает границы между искусственным и человеческим голосом. Новая архитектура позволяет тонко управлять эмоциями, интонациями и даже невербальными звуками вроде смеха или вздохов через специальные аудиотеги в тексте.
Из интересного: поддержка 70+ языков и режим диалога, где модель естественно обрабатывает перебивания и смену эмоций между персонажами. Это открывает новые возможности для создателей аудиокниг, игровых студий и разработчиков чат-ботов. Пока технология находится в раннем доступе, но уже сейчас можно сказать, что это огромный скачок в области TTS.
🔗 Ссылка - *клик*
Из интересного: поддержка 70+ языков и режим диалога, где модель естественно обрабатывает перебивания и смену эмоций между персонажами. Это открывает новые возможности для создателей аудиокниг, игровых студий и разработчиков чат-ботов. Пока технология находится в раннем доступе, но уже сейчас можно сказать, что это огромный скачок в области TTS.
🔗 Ссылка - *клик*
❤5👍4🤨3👏2🥰1🥱1
🦆 DuckDB + Python: мощный тандем для аналитики прямо на ноутбуке
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
- Работа с файлами:
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
➡ SQL Community | Чат
Если вы работаете с аналитикой данных и вам важна скорость, гибкость и простота — попробуйте связку DuckDB + Python. Это встроенная колонко-ориентированная СУБД, которая отлично работает с pandas, Parquet и SQL-запросами — прямо в памяти, без сервера.
📌 Что такое DuckDB?
- Лёгкая SQL-база данных
- Работает как SQLite, но оптимизирована под аналитику
- Отлично справляется с файлами Parquet и Arrow
- Идеально для обработки больших наборов данных локально
🔗 Возможности интеграции с Python:
- Прямой запрос к pandas DataFrame:
con.execute("SELECT * FROM df WHERE col > 10").df()
- Работа с файлами:
con.execute("SELECT COUNT(*) FROM 'data.parquet'")
- Использование SQL + pandas + визуализация в одном блоке
💡 Преимущества:
- 🚀 Быстрее pandas при агрегациях и фильтрации
- 🔗 Поддержка Parquet, CSV, JSON, Arrow и др.
- 🧠 SQL как первый язык аналитики — работает из коробки
- 🛠 Не требует отдельного сервера или установки СУБД
🧪 Это отличное решение для data science проектов, анализа больших логов, локальных ETL-задач и экспериментальной работы с данными.
🔍 Подробный гайд
#Python #DuckDB #DataAnalytics #Pandas #SQL #ETL
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4🥰1👏1
🔥 Успех в IT = скорость + знания + окружение
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
❤2👍1🔥1
Forwarded from Python/ django
py-pglite — обёртка PGlite для Python, позволяющая запускать настоящую базу PostgreSQL прямо при тестах. Без Docker, без настройки — просто импортируй и работай.
📌 Почему это круто:
- 🧪 Ноль конфигурации: никакого Postgres и Docker, только Python
- ⚡ Молниеносный старт: 2–3 с против 30–60 с на традиционные подходы :contentReference[oaicite:2]{index=2}
- 🔐 Изолированные базы: новая база для каждого теста — чисто и безопасно
- 🏗️ Реальный Postgres: работает с JSONB, массивами, оконными функциями
- 🔌 Совместимость: SQLAlchemy, Django, psycopg, asyncpg — любая связка :contentReference[oaicite:3]{index=3}
💡 Примеры установки:
pip install py-pglite
pip install py-pglite[sqlalchemy] # SQLAlchemy/SQLModel
pip install py-pglite[django] # Django + pytest-django
pip install py-pglite[asyncpg] # Асинхронный клиент
pip install py-pglite[all] # Всё сразу
🔧 Пример (SQLAlchemy)
python
def test_sqlalchemy_just_works(pglite_session):
user = User(name="Alice")
pglite_session.add(user)
pglite_session.commit()
assert user.id is not None
py‑pglite — идеальный инструмент для unit- и интеграционных тестов, где нужен настоящий Postgres, но без всей админской рутины.
Полноценный PostgreSQL — без его тяжеловесности.
▪Github
@pythonl
#python #sql #PostgreSQL #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🥰3
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
Модель заточена и оптимизирована для интеграции с Model Context Protocol (MCP).
📊 На SimpleQA (agentic / MCP) — Jan-nano набирает 80.7
Это серьёзный результат для модели такого размера!
Модель работает через Jan — open-source альтернативу ChatGPT, которая запускается локально.
🔍 Jan-nano — ещё один пример того, как компактные модели могут конкурировать с большими моделями благодаря обучению и агентной архитектуре.
▪ HF: https://huggingface.co/Menlo/Jan-nano
@ai_machinelearning_big_data
#LLM #JanNano #MCP #OpenSourceAI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🔥3😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Database Build - инструмент для работы с базами данным с капелькой нейросетей
Можно написать «Создай базу для пиццерии» и получить готовую структуру с таблицами, связями и диаграммами.
Получившиеся таблицы можно править, генерить в них тестовые данные, а потом импортировать в SQL или задеплоить на Supabase (а скоро подвезут и AWS).
Это бесплатно
Можно написать «Создай базу для пиццерии» и получить готовую структуру с таблицами, связями и диаграммами.
Получившиеся таблицы можно править, генерить в них тестовые данные, а потом импортировать в SQL или задеплоить на Supabase (а скоро подвезут и AWS).
Это бесплатно
❤9👍4🔥2
🧠 Хитрая SQL-задача на собеседование: "Пропущенный день"
Представь таблицу заказов:
🎯 Задача: Найти пользователей, у которых были два заказа, сделанных с пропуском ровно одного дня
(например: 1 мая и 3 мая), но без других заказов между ними.
🛑 Не учитываются пары, где между ними был хоть один заказ.
---
💡 Решение с LEAD() + NOT EXISTS:
🔍 Подвох: многие находят заказы “через день”, но забывают проверить, не было ли чего-то между ними.
Такие задачки отлично проверяют знание оконных функций и аналитического мышления.
Представь таблицу заказов:
orders (
id INT,
user_id INT,
order_date DATE
)🎯 Задача: Найти пользователей, у которых были два заказа, сделанных с пропуском ровно одного дня
(например: 1 мая и 3 мая), но без других заказов между ними.
🛑 Не учитываются пары, где между ними был хоть один заказ.
---
💡 Решение с LEAD() + NOT EXISTS:
WITH ranked_orders AS (
SELECT
user_id,
order_date,
LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) AS next_order
FROM orders
),
valid_pairs AS (
SELECT
user_id
FROM ranked_orders ro
WHERE DATE_DIFF(ro.next_order, ro.order_date, DAY) = 2
AND NOT EXISTS (
SELECT 1 FROM orders o
WHERE o.user_id = ro.user_id
AND o.order_date > ro.order_date
AND o.order_date < ro.next_order
)
)
SELECT DISTINCT user_id FROM valid_pairs;
🔍 Подвох: многие находят заказы “через день”, но забывают проверить, не было ли чего-то между ними.
Такие задачки отлично проверяют знание оконных функций и аналитического мышления.
❤11👍5🔥2
🧠 Продвинутая SQL-задача: "Скользящий максимум с условиями"
Допустим, у вас есть таблица
🎯 Задача:
Для каждой транзакции нужно найти максимальный
- За последние 7 дней, включая текущую
- Только по этому же
- Только по статусу
📥 Ожидаемый вывод:
🧩 Решение:
⚠️ Подводные камни:
- Без индексов по
- Используется подзапрос, а не
- В PostgreSQL стоит учитывать точные границы
🚀 Навыки, которые проверяются:
- Оптимизация временных окон
- Группировка и фильтрация с условиями
- Агрегации по диапазонам
💡 Усложнение:
Хочешь ещё интереснее? Добавь группировку по разным
Допустим, у вас есть таблица
transactions:
CREATE TABLE transactions (
id SERIAL PRIMARY KEY,
user_id INT,
amount NUMERIC,
status TEXT,
created_at TIMESTAMP
);
🎯 Задача:
Для каждой транзакции нужно найти максимальный
amount:- За последние 7 дней, включая текущую
- Только по этому же
user_id - Только по статусу
'confirmed'📥 Ожидаемый вывод:
| id | user_id | amount | created_at | max_amount_last_7d |
|----|---------|--------|--------------------|---------------------|
| 1 | 101 | 100 | 2024-01-01 10:00 | 100 |
| 2 | 101 | 150 | 2024-01-04 12:00 | 150 |
| 3 | 101 | 120 | 2024-01-07 09:00 | 150 |
| 4 | 101 | 90 | 2024-01-15 14:00 | 120 |
🧩 Решение:
SELECT
t1.id,
t1.user_id,
t1.amount,
t1.created_at,
(
SELECT MAX(t2.amount)
FROM transactions t2
WHERE t2.user_id = t1.user_id
AND t2.status = 'confirmed'
AND t2.created_at BETWEEN t1.created_at - INTERVAL '7 days' AND t1.created_at
) AS max_amount_last_7d
FROM transactions t1;
⚠️ Подводные камни:
- Без индексов по
user_id, status, created_at запрос будет тормозить - Используется подзапрос, а не
window function, потому что окно — динамическое - В PostgreSQL стоит учитывать точные границы
BETWEEN при сравнении времени🚀 Навыки, которые проверяются:
- Оптимизация временных окон
- Группировка и фильтрация с условиями
- Агрегации по диапазонам
💡 Усложнение:
Хочешь ещё интереснее? Добавь группировку по разным
status, или перепиши на JOIN с LATERAL.🔥9❤6🥰2😱1
Media is too big
VIEW IN TELEGRAM
SQL за полтора часа в одном видео! Полный базовый курс по SQL. Базы данных курс для начинающих!
00:00:00 Введение
00:02:43 Платные курсы и что изучать дальше
00:04:55 Коротко об онлайн редакторе
00:07:11 Что такое база данных
00:08:10 Что такое CRUD
00:10:05 Запрос на создание первой таблицы
00:11:57 Типы данных у атрибутов(колонок) (DATA TYPES)
00:17:26 Прописываем атрибуты(колонки) первой таблицы
00:21:07 Создаем первую таблицу (CREATE TABLE)
00:21:38 Проверка на наличие таблицы при создании (IF NOT EXISTS)
00:22:18 Запрос на удаление таблицы(DROP TABLE)
00:22:33 Проверка на наличие таблицы при удалении(IF EXISTS)
00:22:57 Запрос на добавление объекта в таблицу (INSER INTO table)
00:23:35 Запрос на чтение(получение) объектов из таблицы(SELECT * FROM table)
00:24:18 Модификаторы для атрибутов(колонок) таблицы(NOT NULL, DEFAULT, UNIQUE)
00:29:26 Изменение уже существующей таблицы(ALTER TABLE, ADD, DROP, RENAME, MODIFY COLUMN)
00:36:08 Удаление объектов из таблицы(DELETE FROM table)
00:37:06 Редактирование объекта в таблице(UPDATE table)
00:39:03 Первичный ключ(PRIMARY KEY)
00:45:37 Композиция в бд
00:50:38 "Иностранный" ключ(FOREIGN KEY)
00:57:26 Индексы в бд(INDEX)
00:59:24 Готовим данные для темы алиас, юнион и слияние таблиц
01:03:30 Слияние таблиц(INNER JOIN)
01:06:02 Слияние таблиц(LEFT JOIN)
01:06:53 Слияние таблиц(RIGHT JOIN)
01:07:26 Слияние таблиц(FULL JOIN/OUTER JOIN) и Union
01:09:04 Алиас(table AS alias)
01:12:18 Select Distinct в SQL
01:13:42 AND OR NOT в SQL
01:16:18 ORDER BY и LIMIT в SQL
01:17:35 MIN и MAX в SQL
01:18:25 COUNT SUM AVG в SQL
01:19:29 LIKE в SQL
01:21:31 IN и BETWEEN в SQL
01:22:50 GROUP BY в SQL
01:25:17 EXISTS в SQL
01:27:37 ANY и SOME в SQL
01:29:00 INSERT INTO в SQL
01:30:40 Отношения в базе данных
01:32:11 Отношения один к одному
01:33:09 Отношения один ко многим
01:34:09 Отношения многие ко многим
01:37:10 Отношения один к одному и один ко многим "через"
01:39:10 SQL инъекции
источник
#devops #девопс
00:00:00 Введение
00:02:43 Платные курсы и что изучать дальше
00:04:55 Коротко об онлайн редакторе
00:07:11 Что такое база данных
00:08:10 Что такое CRUD
00:10:05 Запрос на создание первой таблицы
00:11:57 Типы данных у атрибутов(колонок) (DATA TYPES)
00:17:26 Прописываем атрибуты(колонки) первой таблицы
00:21:07 Создаем первую таблицу (CREATE TABLE)
00:21:38 Проверка на наличие таблицы при создании (IF NOT EXISTS)
00:22:18 Запрос на удаление таблицы(DROP TABLE)
00:22:33 Проверка на наличие таблицы при удалении(IF EXISTS)
00:22:57 Запрос на добавление объекта в таблицу (INSER INTO table)
00:23:35 Запрос на чтение(получение) объектов из таблицы(SELECT * FROM table)
00:24:18 Модификаторы для атрибутов(колонок) таблицы(NOT NULL, DEFAULT, UNIQUE)
00:29:26 Изменение уже существующей таблицы(ALTER TABLE, ADD, DROP, RENAME, MODIFY COLUMN)
00:36:08 Удаление объектов из таблицы(DELETE FROM table)
00:37:06 Редактирование объекта в таблице(UPDATE table)
00:39:03 Первичный ключ(PRIMARY KEY)
00:45:37 Композиция в бд
00:50:38 "Иностранный" ключ(FOREIGN KEY)
00:57:26 Индексы в бд(INDEX)
00:59:24 Готовим данные для темы алиас, юнион и слияние таблиц
01:03:30 Слияние таблиц(INNER JOIN)
01:06:02 Слияние таблиц(LEFT JOIN)
01:06:53 Слияние таблиц(RIGHT JOIN)
01:07:26 Слияние таблиц(FULL JOIN/OUTER JOIN) и Union
01:09:04 Алиас(table AS alias)
01:12:18 Select Distinct в SQL
01:13:42 AND OR NOT в SQL
01:16:18 ORDER BY и LIMIT в SQL
01:17:35 MIN и MAX в SQL
01:18:25 COUNT SUM AVG в SQL
01:19:29 LIKE в SQL
01:21:31 IN и BETWEEN в SQL
01:22:50 GROUP BY в SQL
01:25:17 EXISTS в SQL
01:27:37 ANY и SOME в SQL
01:29:00 INSERT INTO в SQL
01:30:40 Отношения в базе данных
01:32:11 Отношения один к одному
01:33:09 Отношения один ко многим
01:34:09 Отношения многие ко многим
01:37:10 Отношения один к одному и один ко многим "через"
01:39:10 SQL инъекции
источник
#devops #девопс
❤12👍7🔥5💊1
🧠 Oracle SQL — совет для продвинутых: аналитические функции > JOIN + GROUP BY
Если ты всё ещё используешь
🔧 Пример: вместо этого
🔥 Используй:
📌 Что это даёт:
•
•
•
⚡ Аналитические функции в Oracle — это:
• меньше кода
• выше производительность
• идеально для дашбордов, отчётов и сложной аналитики
🧠 Вывод: перестань бороться с GROUP BY — используй
Если ты всё ещё используешь
GROUP BY + подзапросы для расчёта рангов, окон и сумм — переходи на аналитические функции. Они читаются проще, работают быстрее и избавляют от лишних джойнов.🔧 Пример: вместо этого
SELECT department_id, employee_id, salary
FROM (
SELECT department_id, employee_id, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees
)
WHERE rnk = 1;
🔥 Используй:
SELECT *
FROM (
SELECT e.*, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
FROM employees e
)
WHERE rnk = 1;
📌 Что это даёт:
•
RANK(), DENSE_RANK(), ROW_NUMBER() — вычисляются без лишнего JOIN •
PARTITION BY делит данные по группам без агрегирования •
OVER (...) даёт гибкость без переписывания логики⚡ Аналитические функции в Oracle — это:
• меньше кода
• выше производительность
• идеально для дашбордов, отчётов и сложной аналитики
🧠 Вывод: перестань бороться с GROUP BY — используй
OVER() и управляй данными как потоком.❤7💊4👀3👍2🔥2
🌐 DeepBI — инновационная платформа для анализа данных с помощью ИИ, которая превращает сложные запросы в простые диалоги. Этот инструмент позволяет исследовать данные из MySQL, PostgreSQL, CSV и других источников, используя естественный язык вместо SQL.
Инструмент умеет генерировать персистентные визуализации и дашборды через чат-интерфейс. Платформа поддерживает мультиязычность (английский/китайский) и работает на Windows, Linux и macOS. Для тестирования доступны Docker-образы и EXE-установщик.
🤖 GitHub
@data_analysis_ml
Инструмент умеет генерировать персистентные визуализации и дашборды через чат-интерфейс. Платформа поддерживает мультиязычность (английский/китайский) и работает на Windows, Linux и macOS. Для тестирования доступны Docker-образы и EXE-установщик.
🤖 GitHub
@data_analysis_ml
❤3👍3🔥2