Видео с разбором вопросов по SQL
ТОП вопросов на собеседовании по SQL
Часть 1.
Часть 2.
Часть 3.
Часть 4.
Часть 5.
Вопросы по SQL.
- В каком порядке выполняется запрос и кратко охарактеризуй каждый оператор:
SELECT
t1.col_2
, COUNT(*)
, COUNT(*) OVER()
FROM Table_1 AS t1
INNER JOIN Table_2 AS t2
ON t1.id =t2.id
WHERE 1 = 1 AND
t1.col_1 > 2
GROUP BY
t1.col_1
HAVING
COUNT(*) > 1
QUALIFY
COUNT(*) OVER() > 1
ORDER BY 2
LIMIT 1
2. Какие виды команд ты знаешь? Назови примеры команд каждого вида и их задачу.
3. Отличие DROP, DELETE, TRUNCATE.
4. Назови основные типы данных в SQL. За основу возьми любую БД.
5. Назови "нестандартные" типы данных, которые ты знаешь.
6. Различие строковых типов данных CHAR, VARCHAR, TEXT.
7. Назовите логические виды JOIN и для чего они нужны.
8. Назовите физические виды JOIN и их принцип работы.
9. Как определить, что функция является оконной?
10. Назови виды оконных функций.
11. В чем разница между RANK и DENSE_RANK?
12. Как определяется окно строк в оконной функции? Объясни, как понимаешь принцип работы оконной функции.
13. Как применял оконные функции на практике? Расскажи пример из жизни. (Если такого примера нет, посмотри "Алгоритм поиска" (Сделай пост на данную тему и не забудь вставить ссылку на него)).
14. Как ты понимаешь, для чего нужно оптимизировать запросы?
15. В чем различия команд EXPLAIN и EXPLAIN ANALYZE?
16. Расскажи алгоритм того, как бы ты оптимизировал запрос.
17. Что делают команды VACUUM, ANALYZE и VACUUM ANALYZE?
18. Что такое spill таблиц?
19. Что выведет следующая команда:
SELECT NULL + 5,
5 - NULL,
10 * NULL,
10 / NULL,
NULL / 10,
NULL || 'какая-то прикольная фраза'
- В чем различие команд COUNT(*) и COUNT(<имя колонки>)?
- Как посчитать среднее значение? (Вопрос с подвохом)
- Какими конструкциями дополняется ORDER BY, чтобы значения NULL стояли в начале и в конце таблицы?
- Как избавиться от NULL-значений? Как ввести ограничение на вставку NULL-значений в таблице?
- Как разделить значение на 0, чтобы получить в ответе NULL?
- Чем отличаются COUNT(*), COUNT(1), COUNT('a')?
- В чем отличие между группировкой и оконной функцией?
- Чем отличаются результаты запросов:
SELECT col1, COUNT(*)
FROM t1
GROUP BY col1;
SELECT DISTINCT col1, COUNT(*) OVER(PARTITION BY col2)
FROM t1
- Есть 2 таблицы: в первой 10 строк, во второй 100 строк. Назови максимальное и минимальное количество возвращаемых строк при разных видах JOIN. (Данные могут быть любые.)
- Есть 2 таблицы: в первой 10 строк, во второй 100 строк. Назови максимальное и минимальное количество возвращаемых строк при разных видах JOIN. (Без NULL-значений и индексы не повторяются в рамках одной таблицы, т.е. в двух таблицах данные могут как повторяться, так и нет.)
- В таблице 100 млн строк, необходимо удалить 90 млн. Как ты это сделаешь и почему?
- Является ли следующая команда транзакцией?
SELECT * FROM t1 WHERE id > 5;
- Есть запрос, который работает ночью и строит отчет. Ежедневно он работал нормально и создавал отчет за 2 часа. Сегодня утром ты пришел на работу, а отчета нет. Смотришь свой пайплайн, а он все еще крутится на чтении запроса. Что могло произойти?
- Как быстро посчитать количество строк в таблице, имеющей нормальную структуру, например, в 3 НФ, где много колонок и пусть в ней даже JSON'овский сырец хранится? Структура таблицы пусть будет следующая:
CREATE TABLE t1
(
id int primary key,
col1 text,
FK_id int NOT NULL,
col2 text,
col3 text,
....
col100 jsonb
)
- Что такое и для чего нужен подзапрос? Что такое коррелируемый и не коррелируемый подзапрос? В чем отличиие СТЕ от подзапроса?
- Для чего нужна временная таблица, если есть CTE?
- Для чего нужна команда UNION и в чем её различие с UNION ALL? Какая команда работает быстрее и почему? Какие еще операции над множествами ты знаешь и что они делают?
- Расскажи про условия в SQL. Для чего нужна конструкция CASE, как она записывается и в каких конструкциях запроса её можно использовать?
- Различие между конструкциями WHERE, HAVING, QUALIFY?
- С помощью каких команд выдается права доступа?
- Чем отличаются типы данных JSON и JSONb?
- Что будет делать, если в плане запроса увидели Nested Loop?
- Как эффективно удалить дубликаты строк в большой таблице?
- Для чего нужна контрукция constraints?