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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
Хочешь узнать, когда именно заказ сменил статус?

Используй LAG(), она возвращает значение из предыдущей строки в рамках группы:
LAG(status) OVER (PARTITION BY order_id ORDER BY updated_at)


Сравни текущее значение с предыдущим:
status <> LAG(status) OVER (...)


Получается булево поле — true, когда статус поменялся.

Хочешь вывести только моменты изменения, просто оберни в подзапрос:
SELECT *
FROM (
SELECT order_id, status, updated_at,
status <> LAG(status) OVER (PARTITION BY order_id ORDER BY updated_at) AS changed
FROM order_status_log
) t
WHERE changed;


🔥 Это основа для аудита изменений и аналитики событийных логов.

➡️ SQL Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍108
🖥 Работа с JSON в PostgreSQL!

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

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍189🔥9😁1
👍12🔥96
Что же выведет консоль?
Anonymous Quiz
21%
A
13%
B
26%
C
40%
D
👍9🔥7🤝6
🖥 Контроль целостности данных!

С помощью оконных функций SQL можно находить разрывы во временных рядах, пропущенные интервалы и повторяющиеся записи.

Сегодня в гайде:
Выявляем пропущенные минуты и события;

Находим дубликаты временных меток;

Контролируем качество потоков и ETL прямо в запросах.


В продакшн-аналитике важно не только считать, но и замечать, где данные пропали или задублировались.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥12🤝6
Оптимистическая блокировка: обновляем данные без конфликтов!

Когда несколько пользователей редактируют одну запись, можно избежать конфликтов с помощью оптимистической блокировки — без явного FOR UPDATE.

Создаём таблицу с версией записи:
CREATE TABLE products (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name TEXT,
price DECIMAL(10,2),
version INT DEFAULT 1 NOT NULL
);


Выбираем запись для редактирования:
SELECT id, name, price, version
FROM products
WHERE id = 1;


Обновляем с проверкой версии:
UPDATE products
SET price = 199.99,
version = version + 1
WHERE id = 1
AND version = 1;


Если другой пользователь уже изменил эту строку, UPDATE не затронет ни одной записи — значит, версия изменилась, и данные устарели.

Приложение должно проверить, что rows_affected = 1, и при необходимости повторить попытку или показать сообщение об ошибке.

Проверяем результат:
SELECT * FROM products WHERE id = 1;


🔥 Такой подход предотвращает «потерю обновлений» без длительных блокировок чтения и подходит для большинства современных СУБД.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1610🔥5🤝1
🖥 SQL-генерация полного набора домино!

Сегодня соберём 28 уникальных костяшек домино — только силами SQL. Без циклов и хранимых процедур, используя лишь CROSS JOIN и простое условие.

В этом посте:
Генерируем все пары чисел от 0 до 6;

Фильтруем зеркальные комбинации;

Получаем финальный набор костяшек в правильном порядке.


Такой приём пригодится не только для домино — он полезен в задачах комбинаторики, генерации тестовых данных и построения матриц связей.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥87🤝2