Рекурсивные запросы с CTE в SQL
Hазберем мощный инструмент — рекурсивные запросы с использованием CTE. Эта техника позволяет работать с иерархическими данными или решать задачи, требующие итераций:
Рекурсивный CTE — это временная таблица, которая ссылается на саму себя, чтобы обрабатывать данные поэтапно.
Предположим, у нас есть таблица
Сначала выбираем данные о целевом менеджере:
Теперь связываем подчиненных менеджера с данными базового уровня:
Наконец, извлекаем всю построенную иерархию:
Результат:
Если у
🔥 Рекурсивные CTE позволяют элегантно работать с иерархиями и выполнять сложные итеративные операции. Осваивая их, вы сможете эффективно решать задачи, которые раньше казались сложными или даже невозможными в SQL.
➡️ SQL Ready | #практика
Hазберем мощный инструмент — рекурсивные запросы с использованием CTE. Эта техника позволяет работать с иерархическими данными или решать задачи, требующие итераций:
Рекурсивный CTE — это временная таблица, которая ссылается на саму себя, чтобы обрабатывать данные поэтапно.
Предположим, у нас есть таблица
employees
с колонками: id
, name
, manager_id
. Сначала выбираем данные о целевом менеджере:
WITH RECURSIVE EmployeeHierarchy AS (
SELECT id, name, manager_id
FROM employees
WHERE name = 'Alice'
Теперь связываем подчиненных менеджера с данными базового уровня:
UNION ALL
SELECT e.id, e.name, e.manager_id
FROM employees e
INNER JOIN EmployeeHierarchy eh
ON e.manager_id = eh.id
)
Наконец, извлекаем всю построенную иерархию:
SELECT * FROM EmployeeHierarchy;
Результат:
Если у
Alice
есть прямые и косвенные подчиненные, запрос вернет их всех. 🔥 Рекурсивные CTE позволяют элегантно работать с иерархиями и выполнять сложные итеративные операции. Осваивая их, вы сможете эффективно решать задачи, которые раньше казались сложными или даже невозможными в SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4🤝4
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9🤝5
Сегодня поговорим о том, как NULL может неожиданно повлиять на результаты ваших запросов. Эта ловушка часто становится причиной неверных данных или неправильных выводов из базы.
NULL в условиях WHERE
На первый взгляд кажется, что
NULL
ведет себя как обычное значение, но это не так. Рассмотрим пример: SELECT *
FROM employees
WHERE salary = NULL;
-- Результат: 0 строк, даже если есть записи с NULL.
Почему так? В SQL сравнение с
NULL
всегда возвращает UNKNOWN
, а не TRUE
или FALSE
. Решение: Использование IS NULL
Чтобы правильно отфильтровать строки, нужно писать:
SELECT *
FROM employees
WHERE salary IS NULL;
-- Результат: Все строки с NULL в столбце salary.
Подводный камень: Агрегация с NULL
В агрегатных функциях
NULL
игнорируется. Например: SELECT AVG(salary)
FROM employees;
-- NULL-значения исключаются из расчета среднего.
Этот момент может быть полезным, но приводит к неожиданным результатам, если забыть об этом.
NULL и операторы
Будьте осторожны с арифметическими операциями:
SELECT salary + 1000 AS updated_salary
FROM employees;
-- Если salary = NULL, результат тоже будет NULL.
Используйте
IS NULL
и помните, что функции и операторы обрабатывают NULL
по-своему. Такой подход снизит риск логических ошибок в запросах.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4🤝2
👍6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Недавно увидел на просторах интернета платформу MySQL Tutorial
— Здесь очень много полезной теории без воды, везде приложены примеры кода и скриншоты, всем советую
⛓ Ссылочка: mysqltutorial.org
➡️ SQL Ready | #ресурс
— Здесь очень много полезной теории без воды, везде приложены примеры кода и скриншоты, всем советую
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2🤝2
Управление пользователями — это важная часть администрирования баз данных, которая помогает контролировать доступ к данным и их безопасность.
Создавать роли и управлять ими в базе данных можно с помощью команд SQL, таких как:
• CREATE USER — для создания нового пользователя.
• CREATE ROLE— создает новую роль, которая может иметь определенные привилегии.
• GRANT — назначает права пользователям или ролям.
• REVOKE — отзывают ранее назначенные права.
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7🤝5😁1
📖 Oracle SQL. 100 шагов от новичка до профессионала
⬇️ Cкачать книгу
➡️ SQL Ready | #книга
Автор акцентирует внимание на ключевых аспектах работы с SQL, таких как создание и управление базами данных, выполнение запросов, работа с таблицами, индексация, а также оптимизация запросов.
Автор: Максим Ч.
Год: 2019
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
В этом гайде мы рассмотрели функцию RANK() в SQL, которая позволяет создавать ранжированные результаты с учетом одинаковых значений:
- Базовое использование
- Ранжирование с использованием групп
- Использование рангов в аналитике
🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🤝5👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3🤝2