SQL cобеседования – Telegram
SQL cобеседования
777 subscribers
97 photos
181 links
Подготовка к собеседованиям в IT

Еще больше разобранных вопросов для подготовки на сайте https://frontview-it.ru

Backend - @frontview_backend
Frontend - @frontview_it
Все IT вакансии - @frontview_all_vacancies
Download Telegram
ROLLUP — это оператор, который используется для создания агрегированных данных на нескольких уровнях иерархии. Он позволяет автоматически добавлять промежуточные итоги и общий итог в результат запроса. Это особенно полезно для отчетов, где необходимо видеть как детализированные, так и суммарные данные.

SELECT department, product, SUM(sales) AS total_sales
FROM sales_data
GROUP BY ROLLUP(department, product);


Этот запрос вернет общие продажи по каждому продукту в каждом отделе, а также общие продажи по отделам и общую сумму продаж.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👀21
Оператор CASE используется для выполнения логических условий и возврата значений на основе этих условий. Он позволяет создавать условные выражения, которые могут быть полезны для формирования более сложных запросов.

Синтаксис CASE включает в себя условия WHEN, которые проверяются последовательно. Если условие истинно, возвращается значение, указанное после THEN. Если ни одно из условий не истинно, возвращается значение после ELSE (если оно указано).

SELECT 
product_name,
CASE
WHEN price < 100 THEN 'Дешево'
WHEN price BETWEEN 100 AND 500 THEN 'Средне'
ELSE 'Дорого'
END AS price_category
FROM products;


Этот запрос классифицирует товары по ценовым категориям.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
🪅 CUBE используется для создания многомерных сводных таблиц, позволяя агрегировать данные по нескольким измерениям. Он автоматически генерирует все возможные комбинации группировок, включая агрегаты по каждому измерению и их комбинациям.

🪅 CUBE полезен для анализа данных, когда необходимо получить сводные данные по нескольким параметрам одновременно.

SELECT 
department,
product,
SUM(sales) AS total_sales
FROM sales_data
GROUP BY CUBE(department, product);


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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔41👀1
Индексы значительно улучшают производительность запросов в базах данных, ускоряя операции поиска. Они работают как указатели, позволяя быстро находить нужные строки без необходимости сканировать всю таблицу.

Например, в таблице с миллионами записей поиск по неиндексированному столбцу может занять много времени, так как требуется последовательный просмотр каждой записи. Однако, если на столбец установлен индекс, поиск будет происходить значительно быстрее, так как индекс позволяет напрямую перейти к нужным данным.

Индексы особенно полезны для операций SELECT, JOIN и WHERE, но могут замедлять INSERT, UPDATE и DELETE, так как требуют обновления индексов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Нормализация — это процесс организации данных в базе данных для минимизации избыточности и обеспечения целостности данных.

Основные преимущества нормализации включают в себя:

1️⃣ Уменьшение избыточности данных, что снижает объем хранимой информации и упрощает управление данными.
2️⃣ Обеспечение целостности данных, так как изменения в одном месте автоматически отражаются в других связанных местах.
3️⃣ Улучшение производительности запросов за счет уменьшения количества дублирующихся данных.

Однако нормализация имеет и недостатки:

1️⃣ Усложнение структуры базы данных, что может затруднить понимание и поддержку.
2️⃣ Увеличение количества таблиц и, как следствие, сложности запросов, что может замедлить выполнение сложных операций.
3️⃣ Потребность в дополнительных соединениях (JOIN) при выполнении запросов, что может негативно сказаться на производительности в некоторых случаях.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
💡Для обработки NULL значений при JOIN важно понимать, как ведут себя различные типы соединений. INNER JOIN отбросит строки, где в столбце JOIN есть NULL, так как условие сопоставления не выполняется. LEFT JOIN и RIGHT JOIN сохраняют строки из одной из таблиц, задавая NULL там, где соответствующих данных нет.

Чтобы тонко управлять включением или исключением записей с NULL, используются условия в секциях ON или WHERE. Например:

SELECT t1.col1, t2.col2
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.key = t2.key OR t1.key IS NULL;


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
📌 Оператор UNION используется для объединения результатов двух или более SELECT-запросов в один набор данных. Он позволяет комбинировать строки из разных таблиц или запросов, при этом удаляя дубликаты. Все запросы, объединяемые с помощью UNION, должны иметь одинаковое количество столбцов и совместимые типы данных.

SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;


Для сохранения всех дубликатов используется UNION ALL.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7💯2
1️⃣ CURRENT_DATE и CURRENT_TIME: возвращают текущую дату и время.

2️⃣ DATEADD: добавляет интервал к дате. Пример: DATEADD(day, 5, '2025-01-01') добавляет 5 дней.

3️⃣ DATEDIFF: вычисляет разницу между двумя датами. Пример: DATEDIFF(day, '2024-10-01', '2024-10-10') возвращает 9.

4️⃣ FORMAT: форматирует дату. Пример: FORMAT('2025-01-24', 'dd/MM/yyyy') возвращает '24/01/2025'.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2
1️⃣ Индексы: Создание индексов на столбцах, участвующих в соединении, может ускорить выполнение запроса. Это особенно важно для столбцов, которые часто используются в условиях соединения.

2️⃣ Тип JOIN: Использование INNER JOIN вместо OUTER JOIN, если это возможно, так как INNER JOIN обычно быстрее, поскольку возвращает только совпадающие записи.

3️⃣ Фильтрация данных: Применение условий фильтрации в WHERE или ON до выполнения JOIN. Это уменьшает объем данных, обрабатываемых в соединении.

4️⃣ Избегание SELECT: Выбор только необходимых столбцов вместо использования SELECT уменьшает объем данных, передаваемых в результате.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
SQL cобеседования pinned «ℹ️Подписывайся на наши новые каналы! 🖥 JS собеседования 🖥 Backend собеседования»
📌 EXISTS используется для проверки наличия строк, возвращаемых подзапросом. Он возвращает TRUE, если подзапрос возвращает хотя бы одну строку, и FALSE, если нет. Запрос ниже выбирает всех сотрудников, у которых есть связанные заказы.

SELECT employee_id, employee_name
FROM employees e
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.employee_id = e.employee_id
);


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8💯1
Определение необходимых индексов для таблицы — важный шаг в оптимизации производительности базы данных.

😎 Анализ запросов: Изучение часто выполняемых запросов, особенно тех, которые содержат WHERE, JOIN, ORDER BY и GROUP BY.

😎 Идентификация колонок: Определение колонок, которые часто используются в фильтрах и соединениях.

😎 Использование EXPLAIN: Применение команды EXPLAIN для анализа плана выполнения запросов и выявления узких мест.

😎 Учет уникальности: Создание уникальных индексов для колонок с уникальными значениями может улучшить производительность.

😎 Балансировка: Избегание избыточных индексов, которые могут замедлить операции вставки и обновления.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
➡️ PARTITION BY используется для разделения набора данных на группы, к которым затем применяются аналитические функции. Это позволяет выполнять вычисления, такие как агрегирование, ранжирование или вычисление скользящих средних, в пределах каждой группы, не сворачивая весь набор данных.

SELECT employee_id, department_id, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employees;


PARTITION BY разделяет данные по department_id, и функция RANK() вычисляет ранг зарплаты в пределах каждого отдела.


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
💡 Для удаления индекса из таблицы используется команда DROP INDEX, за которой следует имя индекса. Важно помнить, что удаление индекса может повлиять на производительность запросов, поэтому стоит оценить необходимость этого действия перед его выполнением.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
🟢Для группировки данных по нескольким столбцам в SQL используется оператор GROUP BY. Он позволяет агрегировать данные по указанным столбцам, что полезно для получения сводной информации.


SELECT department, role, COUNT(*)
FROM employees
GROUP BY department, role;


🟢Этот запрос подсчитывает количество сотрудников в каждой комбинации "отдел-роль".

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
Подзапросы — это запросы, вложенные внутри другого запроса, которые используются для получения промежуточных данных, необходимых для выполнения основного запроса. Они могут находиться в различных частях основного запроса, таких как SELECT, FROM или WHERE, и помогают выполнять более сложные операции с данными.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Полнотекстовый поиск — это метод поиска текстовой информации в базе данных, который позволяет находить строки, содержащие определенные слова или фразы, с учетом их формы и порядка. Этот подход эффективен для работы с большими объемами текстовых данных, такими как статьи или документы.

В SQL полнотекстовый поиск реализуется с помощью индексов. Например, в PostgreSQL можно использовать tsvector и tsquery:

-- Создание полнотекстового индекса
CREATE INDEX idx_fts ON articles USING gin(to_tsvector('english', content));

-- Поиск по ключевым словам
SELECT * FROM articles WHERE to_tsvector('english', content) @@ to_tsquery('search & term');


Этот код создает индекс и выполняет поиск по ключевым словам "search" и "term".

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9💯2
▶️ UNION используется для объединения результатов двух или более SELECT-запросов в один набор данных. Все запросы должны иметь одинаковое количество столбцов с совместимыми типами данных.


-- Первый запрос выбирает имена из таблицы employees
SELECT name FROM employees

UNION

-- Второй запрос выбирает имена из таблицы customers
SELECT name FROM customers;


▶️ UNION по умолчанию удаляет дубликаты. Для сохранения всех записей, включая дубликаты, используется UNION ALL.


SELECT name FROM employees

UNION ALL

SELECT name FROM customers;


UNION помогает объединять данные из разных источников в одном запросе.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Для улучшения производительности при работе с подзапросами стоит использовать коррелированные подзапросы только в случае необходимости, так как они выполняются для каждой строки основного запроса. Вместо этого, можно использовать JOIN или временные таблицы, которые часто работают быстрее и эффективнее.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
🪅 NATURAL JOIN автоматически объединяет таблицы по всем столбцам с одинаковыми именами и типами данных, что может привести к неожиданным результатам, если в таблицах есть столбцы с одинаковыми именами, но разным смыслом.

🪅 Обычный JOIN (INNER JOIN) требует явного указания условий соединения через ключевые слова ON или USING, предоставляя больше контроля над тем, какие столбцы использовать для объединения таблиц. Пример использования INNER JOIN:


SELECT * FROM table1
INNER JOIN table2 ON table1.id = table2.foreign_id;


Этот подход позволяет точно определить, какие столбцы использовать для соединения, избегая потенциальных ошибок NATURAL JOIN.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🤔1
Индексы создаются с помощью команды CREATE INDEX, которая улучшает скорость выполнения запросов, позволяя быстрее находить строки в таблице. Индексы могут быть созданы на одном или нескольких столбцах таблицы, что оптимизирует операции поиска и сортировки.

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1