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

Автор: @energy_it

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

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

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

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥6🤝3
ROLLUP и CUBE: многоуровневые итоги в одном запросе!

Обычно для отчётов приходится писать несколько GROUP BY с разными уровнями агрегации. Но ROLLUP умеет делать это автоматически:
SELECT department, SUM(salary) AS total
FROM employees
GROUP BY ROLLUP(department);


В результате вы получите суммы по каждому отделу и общую строку «итого»:
SELECT region, department, SUM(salary) AS total
FROM employees
GROUP BY CUBE(region, department);


А CUBE даёт все комбинации агрегатов: по региону, по отделу и полный итог:
SELECT COALESCE(region,'ALL') AS region,
COALESCE(department,'ALL') AS department,
SUM(salary) AS total
FROM employees
GROUP BY CUBE(region, department);


🔥 ROLLUP и CUBE экономят десятки строк кода, когда нужны многоуровневые отчёты.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍98🤝1
🖥 LAG и LEAD - анализ последовательностей событий!

Хотите понимать, какие действия выполняют пользователи подряд, где случаются разрывы и как быстро выявлять аномалии?

Сегодня в посте:
Узнаём, как LAG и LEAD «сдвигают» строки для анализа предыдущих и следующих событий;

Вычисляем разрывы между действиями и фильтруем нужные паттерны;

Находим «спящих» пользователей или редкие события, чтобы улучшить аналитику.


Такой подход делает запросы компактными и ускоряет выявление закономерностей.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥54🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Нашел вам Coursera — невероятная платформа для изучения SQL и не только!

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

📌 Делюсь ссылочкой: coursera.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8🤝4😁3
🖥 Выявляем подозрительные действия игроков!

Сегодня разберём мини-задачу по геймификации: соберём отчёт по аномальным результатам и подозрительным сессиям.

Сегодня в задаче:
Находим игроков с нереальными результатами;

Выявляем короткие сессии с высоким счётом;

Определяем группы игроков, которые могут кооперироваться.


Такой приём помогает не только в играх, но и в любых системах с прогрессом, баллами или рейтингами.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍166🔥5
🖥 Разбираем методы слияния и объединения данных!

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

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥93🤝2
UPSERT: вставляем или обновляем запись!

Нередко требуется добавить данные без риска дубликата. Реализуем 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


🔥 Такой приём избавляет от дубликатов и делает вставку надёжной.

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