В этой шпаргалке — set-операции SQL: от объединения уникальных и повторяющихся строк до пересечений и разностей выборок. Это основа для аналитики и репортинга, когда важно агрегировать данные из разных источников и строить комплексные отчёты.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥9❤3🤝2
UPSERT: вставляем или обновляем запись!
Нередко требуется добавить данные без риска дубликата. Реализуем
Задаём таблицу:
Пробная вставка:
Результат:
🔥 Такой приём избавляет от дубликатов и делает вставку надёжной.
➡️ SQL Ready | #практика
Нередко требуется добавить данные без риска дубликата. Реализуем
UPSERT — вставка при отсутствии и обновление при конфликте.Задаём таблицу:
CREATE TABLE users (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
login_count INT NOT NULL DEFAULT 0
);
Пробная вставка:
INSERT INTO users (email, login_count)
VALUES ('alice@mail.com', 1);
UPSERT при конфликте (увеличиваем счётчик и сразу возвращаем результат):INSERT INTO users AS u (email, login_count)
VALUES ('alice@mail.com', 1)
ON CONFLICT (email) DO UPDATE
SET login_count = u.login_count + EXCLUDED.login_count
RETURNING email, login_count;
Результат:
email | login_count
----------------+------------
alice@mail.com | 2
🔥 Такой приём избавляет от дубликатов и делает вставку надёжной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤10🔥5🤝1
Срок обещан один, а товар приехал позже - это сразу удар по доверию клиента и показателям сервиса.
Сегодня в задаче:
• Сравним обещанную дату доставки с фактической;
• Посчитаем количество дней задержки;
• Вернём список всех заказов с опозданием.
В результате получаем инструмент для контроля логистики: видно, где сбои и на сколько дней выходят из графика. Это основа для улучшения SLA и переговоров с перевозчиками.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤9🔥5🤝1
В этой шпаргалке — практичные приёмы условной логики, которые заменяют громоздкие подзапросы. С их помощью можно проверять NULL, подставлять значения по умолчанию, строить бизнес-правила прямо в запросах и гибко фильтровать данные в реальной аналитике.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤6🔥6🤝2
CHECK — встроенный контроль качества данных!
Он помогает базе сразу отбраковывать мусорные или аномальные значения, не дожидаясь ошибок в приложении или аналитике.
Пример: таблица заказов
Попытка вставить некорректное значение:
Можно добавлять бизнес-правила:
Но если в таблице уже есть строки с total_amount < 100, СУБД выдаст ошибку.
🔥 Так что,
➡️ SQL Ready | #практика
Он помогает базе сразу отбраковывать мусорные или аномальные значения, не дожидаясь ошибок в приложении или аналитике.
Пример: таблица заказов
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT NOT NULL,
total_amount DECIMAL(10,2) NOT NULL CHECK (total_amount >= 0),
status VARCHAR(20) NOT NULL CHECK (status IN ('new', 'pending', 'shipped'))
);
Попытка вставить некорректное значение:
INSERT INTO orders VALUES (1, 101, -500, 'new');
-- ERROR: check constraint violated
Можно добавлять бизнес-правила:
ALTER TABLE orders
ADD CONSTRAINT chk_min_total CHECK (total_amount >= 100);
Но если в таблице уже есть строки с total_amount < 100, СУБД выдаст ошибку.
🔥 Так что,
CHECK — это встроенный «охранник» базы, предотвращающий ошибки ещё до попадания данных в аналитику или отчёты.Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍8🔥7
Сегодня напишем SQL-запрос, который покажет, какие персонажи выигрывают чаще всего. Пригодится, чтобы балансировать PvP, выявлять лучших героев и держать мету игры в здоровом состоянии.
В этой задаче:
• Считаем количество боёв и побед каждого героя;
• Рассчитываем процент побед;
• Строим топ-5 персонажей.
В итоге получаем инструмент для аналитики боёв и корректировки баланса игры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍6🔥6