SQL Ready | Базы Данных
15.4K subscribers
1.2K photos
66 videos
2 files
578 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREBc

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
USING — способ объединять таблицы в SQL!

Когда таблицы имеют одинаковые ключи, USING помогает сократить код и избежать дублирования столбцов.

Объединим заказы и клиентов по общему полю:
SELECT *
FROM orders
JOIN customers USING (customer_id);


То же самое через ON выглядело бы чуть длиннее и менее лаконично:
SELECT *
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;


С USING SQL сам убирает дубликаты полей, оставляя одно customer_id в результирующем наборе.

Можно соединять и по нескольким ключам:
SELECT *
FROM orders
JOIN shipments USING (order_id, customer_id);


Пример из аналитики: посчитаем сумму заказов по каждому клиенту:
SELECT customer_id,
c.customer_name,
SUM(o.amount) AS total_amount
FROM customers c
JOIN orders o USING (customer_id)
GROUP BY customer_id, c.customer_name
HAVING SUM(o.amount) > 1000
ORDER BY total_amount DESC;


🔥 Используйте USING, когда имена ключей совпадают — это приём, который улучшает читаемость и уменьшает вероятность ошибок.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥189👍9
Транзакция — не просто “begin и commit”, а ещё и способ управлять атомарностью и блокировками!

Начинаешь с BEGIN — всё, что дальше, идёт как единое целое:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;


Если что-то падает, делай rollback, и база возвращается к исходному состоянию.

Не забывай: каждая открытая транзакция держит блокировки. Чем дольше она живёт, тем выше шанс конфликтов.

Контролируй уровень изоляции - баланс между скоростью и безопасностью:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;


🔥 Производительность БД начинается с правильного управления транзакциями и блокировками.

➡️ SQL Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8🤝63
🖥 Пишем мини-чат-бота!

Сегодня создаём простого бота, который “понимает” текст запроса и отвечает на сообщения пользователя.

В этом посте:
• Храним шаблоны фраз и ответы в таблице responses;

• Используем ILIKE, чтобы находить ключевые слова в сообщении;

• Возвращаем лучший ответ по приоритету совпадений.


Приём показывает, что SQL способен работать не только с числами, но и с текстом, превращаясь в мини-экспертную систему.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥279👍7🤝1
🖥 Временные таблицы и переменные в SQL Server!

В этой шпаргалке собраны основные приёмы работы с временными данными в SQL Server: создание, заполнение, очистка и удаление временных таблиц, а также использование табличных переменных. Эти методы помогают выполнять промежуточные расчёты, строить отчёты и оптимизировать сложные запросы без изменения основной схемы базы.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍119
WITHIN GROUP — агрегаты с управляемым порядком!

Обычные агрегаты в SQL не гарантируют порядок входных данных, что важно для медиан и упорядоченных списков. Конструкция WITHIN GROUP решает это, задавая порядок элементов внутри агрегатной функции.

Пример: соберём список продуктов по категории в порядке убывания продаж:
SELECT
category_id,
LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY total_sales DESC) AS top_products
FROM product_sales
GROUP BY category_id;


В отличие от ARRAY_AGG(product_name ORDER BY ...), синтаксис WITHIN GROUP используется для ordered-set функций, а не для любых агрегатов.

Пример вычисления порогового значения 90% по сумме заказов по регионам:
SELECT
region_id,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY total_amount) AS p90_sales
FROM orders
GROUP BY region_id;


PERCENTILE_CONT() и PERCENTILE_DISC() позволяют вычислять медиану или любое процентное значение без оконных функций.

Медиана чека по каждому магазину:
SELECT
store_id,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total_amount) AS median_check
FROM orders
GROUP BY store_id;


Такой подход может быть проще и эффективнее, чем использование NTILE() или RANK() в оконных выражениях.

🔥 Используйте WITHIN GROUP, когда важен порядок в агрегатах.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍87
🖥 Корреляция: как связаны просмотры и продажи!

SQL умеет не только суммировать и фильтровать данные, он способен показывать насколько сильно одно влияет на другое.

В этом посте:
Находим средние значения метрик;

Считаем ковариацию и дисперсии;

Собираем финальную формулу корреляции прямо в запросе.


Это помогает быстро проверять гипотезы, оценивать результаты и находить зависимости.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍148🤝1