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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/sql_ready
加入频道
ON CONFLICT DO NOTHING — апсерты без ошибок!

Когда вы вставляете данные в таблицу с уникальными ограничениями, может прилететь ошибка: дубликат ключа нарушает уникальность. Особенно обидно, если часть данных уже вставлена, а часть — нет.

Чтобы обойти это — используем ON CONFLICT DO NOTHING. Он просто пропустит строки, которые уже есть.

Допустим, у нас есть таблица с пользователями, где email должен быть уникальным:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE
);


Попробуем вставить сразу несколько строк, включая дубликат:
INSERT INTO users (email)
VALUES ('[email protected]'),
('[email protected]'),
('[email protected]'); -- дубликат!


Результат будет неудачным — Postgres выдаст ошибку и отменит всю операцию. Однако с ON CONFLICT всё работает иначе:
INSERT INTO users (email)
VALUES ('[email protected]'),
('[email protected]'),
('[email protected]')
ON CONFLICT DO NOTHING;


🔥 Теперь база данных вставит только уникальные строки, а повторяющиеся — просто пропустит без лишнего шума.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍8🔥6
🖥 Профилирование производительности — способ найти и устранить узкие места в базе данных!

Позволяет понять, какие запросы и функции съедают ресурсы, где тормозит система и как это исправить. Отличный инструмент для ускорения и оптимизации работы с данными.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥8👍4🤝3
🖥 Aging-отчёт по просроченным счетам!

В этой задаче напишем SQL-запрос, который поможет построить отчёт по неоплаченным счетам и оценить просроченную дебиторскую задолженность.

Что делаем:

Распределяем счета по корзинам: 0-30, 31-60, 61-90, 90+ дней просрочки.

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

Строим топ-5 крупнейших должников с просрочкой более 60 дней.


Такой отчёт позволяет увидеть, где «зависли» деньги, и помогает сфокусироваться на проблемных клиентах

SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥225👍5
🖥 Разбираемся с LATERAL JOIN — подзапрос как функция!

С помощью LATERAL можно использовать значения из текущей строки в подзапросе — как будто передаёшь параметры в функцию.

Что важно знать:

LATERAL делает подзапросы внутри JOIN «осведомлёнными» о текущей строке.

Удобно, когда нужно посчитать агрегаты или достать top-N из связанных таблиц.

Отлично работает с jsonb, позволяя обойтись без оконных функций.


Инструмент, с которым сложные запросы станут в разы проще.

SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥198👍5🤝2
🖥 Разбираемся с FILTER — лаконичные агрегаты по условию!

FILTER позволяет задать условие прямо для SUM, COUNT, AVG — без вложенных подзапросов и лишнего шума. Код получается чище, короче и проще читается.

Что важно знать:

FILTER работает внутри агрегата — условие применяется только к нему.

Отлично подходит для отчётных таблиц с множеством условий.

Заменяет CASE WHEN в 90% ситуаций, где раньше казалось без него никак.


Поэтому, это инструмент, с которым SQL-запросы становятся короче и понятнее.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍9🤝86