SQL и Анализ данных
12.6K subscribers
679 photos
66 videos
3 files
693 links
Базы данных и всё, что с ними связано!

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

РКН № 6766085482
Download Telegram
🔥 Успех в 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

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
2👍1🔥1
Forwarded from Python/ django
🖥 py-pglite — PostgreSQL без установки, тестируй как с SQLite!

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
👍154🥰3
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ Jan-nano от Menlo Research — модель на базе Qwen3 всего на 4B параметров, созданная для Deep Research.

Модель заточена и оптимизирована для интеграции с 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).

Это бесплатно
9👍4🔥2
🧠 Хитрая SQL-задача на собеседование: "Пропущенный день"

Представь таблицу заказов:

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-задача: "Скользящий максимум с условиями"

Допустим, у вас есть таблица 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.
🔥96🥰2😱1
🖥 WrenAI — это open-source AI-ассистент для анализа данных и генерации SQL-запросов (Text-to-SQL)!

🌟 Он позволяет пользователям взаимодействовать с данными с помощью естественного языка и автоматически формировать SQL-запросы, строить диаграммы, отчеты и таблицы.

🔐 Лицензия: AGPL-3.0

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥3🥰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 #девопс
12👍7🔥5💊1
🧠 Oracle SQL — совет для продвинутых: аналитические функции > JOIN + 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
3👍3🔥2
Forwarded from Machinelearning
🤖 Gemini Robotics выпускает автономный AI для роботов

Google представили Gemini Robotics On-Device — первую модель, объединяющую зрение, язык и действия, которая работает прямо на роботах, без постоянного подключения к интернету.

🔍 Что делает эту модель особенной:

🔹 Объединяет универсальность и точность Gemini, но работает локально
🔹 Моделька справляется со сложными задачами с двумя руками (манипуляции, сборка, перенос)
🔹 Обучается новым действиям всего по 50–100 демкам

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

🛠 В комплекте выходит SDK Gemini Robotics — для разработчиков, которые хотят дообучить модель под свои нужды, включая тесты в физическом симуляторе MuJoCo.

🌐 Полностью автономная работа — идеально для кейсов с плохой связью или требованиями к высокой скорости отклика.

Gemini Robotics продолжает двигаться к будущему, где AI становится частью физического мира.

👉 Подробнее: https://goo.gle/gemini-robotics-on-device


@ai_machinelearning_big_data

#ai #robots #vlm #google #Gemini
🤨3👍2
💎 Tencent выводит 3D-генерацию на новый уровень с обновлением Hunyuan3D.

Китайский технологический гигант продолжает совершенствовать свою открытую нейросеть для создания трёхмерных объектов. В версии 2.1 модель научилась учитывать физические свойства материалов при рендеринге — теперь свет реалистично преломляется на стекле, отражается от металла и рассеивается на тканях.

Нейросеть работает по принципу двухэтапной генерации: сначала создаются изображения объекта с разных ракурсов, затем они преобразуются в 3D-модель. При этом ии остаётся доступным для широкого круга пользователей, ее базовые функции работают на видеокартах от 10 ГБ памяти.

🔗 Ссылка - *клик*
6🥱2👍1🔥1🤨1
🧠 SQL-задача для профи: "Ловушка NULL в подзапросе"

Условие:
Есть две таблицы:


CREATE TABLE employees (
id INT PRIMARY KEY,
name TEXT,
department_id INT
);

CREATE TABLE departments (
id INT PRIMARY KEY,
name TEXT,
is_active BOOLEAN
);



✔️ Задание:
Выведите всех сотрудников, которые работают в неактивных отделах.
Если department_id у сотрудника NULL, таких сотрудников выводить не нужно.

❗️Подводный камень:
Решение, которое интуитивно приходит в голову, не работает правильно:


SELECT *
FROM employees
WHERE department_id NOT IN (
SELECT id FROM departments WHERE is_active = true
);


📉 Почему это ошибка:

Если в departments есть хотя бы одна строка, где is_active = true, но id = NULL, то NOT IN (...) будет сравнивать с NULL, а NULL NOT IN (...) всегда возвращает UNKNOWN, то есть — ничего не вернёт.

Правильное решение:


SELECT e.*
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.is_active = false;


💡 Почему работает:

JOIN отсекает NULL по department_id сразу.

Фильтр по is_active = false работает без ловушек NULL.

Сотрудники без департамента автоматически исключаются.

🔎 Усложнение для профи:
Что произойдёт, если в таблице departments есть id = NULL, is_active = true?
Ответ: ничего — JOIN по NULL никогда не срабатывает. Но если используете NOT EXISTS, нужно быть осторожным.

🧩 Вывод:
Когда дело касается NOT IN и NULL, всегда проверяйте подзапрос. Лучше переходите на JOIN или NOT EXISTS:


SELECT e.*
FROM employees e
WHERE EXISTS (
SELECT 1
FROM departments d
WHERE d.id = e.department_id AND d.is_active = false
);


📌 Запомни:
NULL ломает IN / NOT IN, но не ломает JOIN / EXISTS.

SQL Community | Чат
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥52
🗄️ MyDumper — параллельный бэкап MySQL без головной боли. Этот инструмент делает логические дампы MySQL в 5-10 раз быстрее стандартного mysqldump за счёт многопоточной работы. Данные сохраняются в отдельных файлах для каждой таблицы, а встроенная поддержка регулярных выражений позволяет гибко выбирать, какие базы или таблицы включать в бэкап.

Разработчики интересно реализовали согласованность данных: инструмент сначала блокирует таблицы глобальным read-lock, затем создаёт транзакционные снимки для каждого потока и только потом отпускает блокировки. Для восстановления есть параллельный загрузчик myloader

🤖 GitHub
6👍2
📖 Маленькая полезная шпаргалка по SQL

Прописаны все виды команд JOIN, а также их визуал.

Крайне полезная штука — сохраняем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥75🏆1
Курс SQL - от новичка до профи

🔹 Регистрация на сайте Oracle
🔹 Что такое SQL? Какие задачи решают Базы Данных?
🔹 Команды SQL: DML, DDL, DCL, TCL
🔹 Агрегатные функции SQL: MIN | MAX | AVG | SUM | COUNT
🔹 Функция GROUP BY. HAVING vs WHERE
🔹INNER JOIN. LEFT JOIN и другие... В ЧЕМ РАЗНИЦА?
🔹Подзапросы SQL Oracle | Вложенные запросы SQL
🔹Агрегатные оконные функции | Аналитические функции sql: min/max/sum/avg/count
🔹Оконные функции SQL | Аналитические функции row_number / dense_ranka
🔥20👍2🥰1🤨1💊1