В SQL можно писать циклы без циклов!
Ты знал, что SQL умеет рекурсивно создавать данные без таблиц?
Вот, например, как сделать последовательность чисел от
⏩
⏩ Начинаем с 1.
⏩ В
⏩ Останавливаемся на 100.
Если было полезно — жду твоего🔥
👉 @SQLPortal
Ты знал, что SQL умеет рекурсивно создавать данные без таблиц?
Вот, например, как сделать последовательность чисел от
1 до 100
без LOOP, WHILE
и даже без исходной таблицы:WITH RECURSIVE numbers AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;
WITH RECURSIVE
создает временную таблицу.UNION ALL
прибавляем 1 на каждой итерации.Если было полезно — жду твоего
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46❤7👍7
Оператор
Оператор
👉 @SQLPortal
INSERT INTO SELECT
в SQLОператор
INSERT INTO SELECT
используется для копирования данных из одной таблицы в другую. Это удобно, когда нужно перенести данные или создать их резервную копию.Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6
Обычно
SUM() OVER()
считает всё подряд, но что если нам нужна сумма только за последние N
дней, без геморроя?Решение – используем
RANGE BETWEEN INTERVAL!
SELECT
user_id,
transaction_date,
amount,
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY transaction_date
RANGE BETWEEN INTERVAL '7 days' PRECEDING AND CURRENT ROW
) AS rolling_sum
FROM transactions;
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍11🤯3
SQL-фишка, которая сразит наповал:
Простой способ выбрать самую дорогую покупку каждого клиента без кучи вложенных запросов!
☑ Работает быстрее и чище, чем GROUP BY + MAX. Рекомендуется для любых построчных подзапросов.
👉 @SQLPortal
LATERAL (или CROSS APPLY)
Простой способ выбрать самую дорогую покупку каждого клиента без кучи вложенных запросов!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤6👀4🔥3
Разбор вопроса с собеседования: SQL-запрос для выборки данных по условию
На собеседованиях по SQL часто встречаются задачи, связанные с использованием шаблонов и фильтрации данных. Рассмотрим один из таких вопросов
👉 @SQLPortal
На собеседованиях по SQL часто встречаются задачи, связанные с использованием шаблонов и фильтрации данных. Рассмотрим один из таких вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4🔥3
Master_SQL.pdf
754.9 KB
Руководство по SQL 🔥
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации
Сохраняйте, чтобы не потерять
👉 @SQLPortal | #ресурсы
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации
Сохраняйте, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3😁2
Топ-10 техник масштабирования баз данных, которые вам стоит знать:
Сохраняй чтобы не забыть!
👉 @SQLPortal
🍩 Индексирование: Создавайте индексы на часто запрашиваемых столбцах, чтобы ускорить извлечение данных.🍩 Вертикальное масштабирование: Обновите сервер базы данных, добавив больше процессора, ОЗУ или хранилища для обработки увеличенной нагрузки.🍩 Кэширование: Храните часто запрашиваемые данные в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика.🍩 Шардинг: Распределяйте данные по нескольким серверам, разделив базу данных на более мелкие независимые шардированные части, что позволяет достичь горизонтального масштабирования и улучшенной производительности.🍩 Репликация: Создавайте несколько копий (реплик) базы данных на разных серверах, позволяя распределять запросы на чтение по репликам и улучшая доступность.🍩 Оптимизация запросов: Тщательно настраивайте SQL-запросы, избегайте дорогих операций и эффективно используйте индексы для улучшения скорости выполнения и снижения нагрузки на базу данных.🍩 Пуллинг соединений: Снижайте накладные расходы на открытие/закрытие соединений с базой данных, повторно используя существующие соединения, что улучшает производительность при высоком трафике.🍩 Вертикальное партиционирование: Разделите большие таблицы на более мелкие, более управляемые части (партиции), каждая из которых содержит подмножество столбцов из исходной таблицы.🍩 Денормализация: Храните данные в избыточном, но структурированном формате, чтобы минимизировать сложные объединения и ускорить работу с запросами, ориентированными на чтение.🍩 🍩 Материализованные представления: Предварительно вычисляйте и храните результаты сложных запросов как отдельные таблицы, чтобы избежать дорогостоящих перерасчетов, уменьшив нагрузку на базу данных и улучшив время отклика.
Сохраняй чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Для фильтрации агрегированных данных используйте
HAVING
вместо WHERE
. Это позволяет фильтровать данные после агрегации, что невозможно сделать с WHERE
.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤6
Понимание ключей в базах данных
В SQL ключи помогают гарантировать целостность данных и предотвращают дублирование.❌
⏩ Primary Key
Уникально идентифицирует каждую строку в таблице.
⏩ Candidate Key
Набор атрибутов, который может быть первичным ключом.
⏩ Alternate Key
Кандидатный ключ, который не был выбран в качестве первичного.
⏩ Foreign Key
Связывает таблицы между собой, обеспечивая ссылочную целостность.
⏩ Unique Key
Гарантирует уникальность значения в столбце, но допускает NULL.
⏩ Super Key
Любой набор атрибутов, уникально идентифицирующий строку.
👉 @SQLPortal
В SQL ключи помогают гарантировать целостность данных и предотвращают дублирование.
Уникально идентифицирует каждую строку в таблице.
Набор атрибутов, который может быть первичным ключом.
Кандидатный ключ, который не был выбран в качестве первичного.
Связывает таблицы между собой, обеспечивая ссылочную целостность.
Гарантирует уникальность значения в столбце, но допускает NULL.
Любой набор атрибутов, уникально идентифицирующий строку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
Нужно получить имена сотрудников из таблицы EmployeeDetail в нижнем регистре
SELECT LOWER(FirstName) AS [First Name] FROM EmployeeDetail
Используйте
LOWER()
для приведения строк к нижнему регистру, а AS
— для переименования столбца.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5