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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
Автоматический пересчёт скидок и итоговой суммы!

Не обязательно считать скидки и финальную стоимость на уровне приложения — SQL может делать это сам.

Добавим вычисляемое поле с финальной суммой:
ALTER TABLE orders
ADD COLUMN total_with_discount NUMERIC(12,2)
GENERATED ALWAYS AS (
((total * (100 - COALESCE(discount, 0))) / 100)::NUMERIC(12,2)
) STORED;


Теперь при вставке всё считается автоматически:
INSERT INTO orders (total, discount) VALUES (500, 10)
RETURNING total, discount, total_with_discount;
-- total=500.00 | discount=10.00 | total_with_discount=450.00


Также можно обновлять скидки массово:
UPDATE orders
SET discount = CASE
WHEN total > 1000 THEN 15
WHEN total > 500 THEN 10
ELSE 5 END;


🔥 SQL сам пересчитает итог — без ручной логики и ошибок округления. Удобно для биллинга, акций и расчёта чеков в реальном времени.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👍3
🖥 SQL-анализ ближайших станций метро для пользователей!

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

В задаче:
Рассчитаем расстояние между пользователями и станциями по координатам;

Найдём ближайшую станцию для каждого пользователя;

Вернём таблицу с названием станции и дистанцией в километрах.


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

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🤝10👍84
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Hacksplaining — разберись в SQL и защити свои проекты от атак!

На Hacksplaining есть полноценный урок SQL Injection, где показывают, как злоумышленники внедряют запросы и как от этого защититься.

Курс не просто теоретический - смотришь код, анализируешь, проверяешь варианты атак и способов защиты. Понимаешь, как работают запросы к базе данных и как их можно исказить под чужие цели.

📌 Оставляю ссылочку: hacksplaining.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4🤝41
🖥 Разбираем работу с иерархическими данными!

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

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👍4
COALESCE — заполняем пропуски в запросе!

NULL часто ломают отчёты и расчёты: сумма, среднее, сортировка — всё сбивается. COALESCE() подставляет первое непустое значение и спасает от ошибок.

Заменим отсутствующие телефоны на понятный текст:
SELECT name, COALESCE(phone, 'не указано') AS phone
FROM customers;


В реальных проектах — незаменимо для расчётов:
SELECT id, total,
total - (total * COALESCE(discount, 0) / 100) AS total_after_discount
FROM orders;


При объединении источников можно задать приоритет данных:
SELECT user_id,
COALESCE(main.email, backup.email, 'unknown@example.com') AS email
FROM main_users AS main
LEFT JOIN backup_users AS backup USING (user_id);


Для аналитики — способ исключить искажения при агрегации:
SELECT region, SUM(COALESCE(sales, 0)) AS total_sales
FROM branches
GROUP BY region;


🔥 COALESCE делает запросы надёжнее, отчёты точнее, а код — чище и короче.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍118🔥7
🖥 Сегодня разбираем GENERATE_SERIES — календарь и диапазоны!

SQL умеет сам генерировать даты, числа и интервалы. Можно строить отчёты, искать пропуски и анализировать активность без сторонних таблиц.

В этом посте:
Генерируем последовательность дат и временных меток;

Находим “пустые” дни без заказов;

Формируем ежедневный отчёт по активности.


Функция, которая превращает SQL в крутой аналитический инструмент.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥85🤝3
Скользящее среднее: сглаживаем колебания заказов!

Оконные функции позволяют видеть тренд заказов без резких скачков.Посчитаем среднее количество заказов за последние 3 дня.

Считаем количество заказов по датам:
SELECT order_date,
COUNT(*) AS orders
FROM orders
GROUP BY order_date;


Формируем временную таблицу для расчётов:
WITH daily AS (
SELECT order_date,
COUNT(*) AS orders
FROM orders
GROUP BY order_date
)


Вычисляем среднее за 3 дня:
SELECT order_date,
AVG(orders) OVER (
ORDER BY order_date
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) AS avg_3days
FROM daily;


Добавляем исходное значение для сравнения:
SELECT order_date,
orders,
ROUND(AVG(orders) OVER (
ORDER BY order_date
ROWS 2 PRECEDING
), 2) AS avg_3days
FROM daily;


🔥 Получаем сглаженную динамику заказов по датам — идеальный инструмент для анализа активности.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7🤝2