В этой шпаргалке собраны основные приёмы работы с JSON и JSONB в PostgreSQL: доступ к элементам, извлечение вложенных данных, обновление значений, создание объектов, раскрытие массивов, форматирование и проверка вхождения. Эти инструменты позволяют удобно хранить и обрабатывать структурированные данные прямо в базе.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤9🔥9😁1
👍9🔥7🤝6
С помощью оконных функций SQL можно находить разрывы во временных рядах, пропущенные интервалы и повторяющиеся записи.
Сегодня в гайде:
• Выявляем пропущенные минуты и события;
• Находим дубликаты временных меток;
• Контролируем качество потоков и ETL прямо в запросах.
В продакшн-аналитике важно не только считать, но и замечать, где данные пропали или задублировались.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥12🤝6
Оптимистическая блокировка: обновляем данные без конфликтов!
Когда несколько пользователей редактируют одну запись, можно избежать конфликтов с помощью оптимистической блокировки — без явного
Создаём таблицу с версией записи:
Выбираем запись для редактирования:
Обновляем с проверкой версии:
Если другой пользователь уже изменил эту строку,
Приложение должно проверить, что
Проверяем результат:
🔥 Такой подход предотвращает «потерю обновлений» без длительных блокировок чтения и подходит для большинства современных СУБД.
➡️ SQL Ready | #практика
Когда несколько пользователей редактируют одну запись, можно избежать конфликтов с помощью оптимистической блокировки — без явного
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;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤10🔥5🤝1
Сегодня соберём 28 уникальных костяшек домино — только силами SQL. Без циклов и хранимых процедур, используя лишь
CROSS JOIN и простое условие.В этом посте:
• Генерируем все пары чисел от 0 до 6;
• Фильтруем зеркальные комбинации;
• Получаем финальный набор костяшек в правильном порядке.
Такой приём пригодится не только для домино — он полезен в задачах комбинаторики, генерации тестовых данных и построения матриц связей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8❤7🤝2
Нужно найти, где бронирования, подписки или сессии пересекаются по времени?
Два интервала пересекаются, если начало одного раньше конца другого, и наоборот:
Это условие покрывает все случаи перекрытий, даже частичных и вложенных.
Теперь объедини данные сами с собой:
Хочешь анализировать бронирования по ресурсу? Добавь фильтр:
🔥 Теперь видно, какие заявки реально конфликтуют по времени.
➡️ SQL Ready | #совет
Два интервала пересекаются, если начало одного раньше конца другого, и наоборот:
a.start_at < b.end_at
AND b.start_at < a.end_at
Это условие покрывает все случаи перекрытий, даже частичных и вложенных.
Теперь объедини данные сами с собой:
SELECT a.id, b.id
FROM bookings a
JOIN bookings b
ON a.id < b.id
AND a.start_at < b.end_at
AND b.start_at < a.end_at;
a.id < b.id, чтобы не получить пары в обе стороны.Хочешь анализировать бронирования по ресурсу? Добавь фильтр:
AND a.room_id = b.room_id
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤11👍6🤝1
Эта шпаргалка собирает основные псевдоколонки Oracle и показывает, как использовать их на практике: нумерация строк, доступ к физическому адресу, работа с иерархиями, определение листовых/корневых узлов, генерация UUID, отслеживание изменений по SCN и просмотр историй строк. Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥10❤7🤝2