20 вопросов и задач по SQL на собеседовании с ответами
От автора Telegram-канала Аналитика и Growth mind-set (там публикую еще больше вопросов и тестовых задач с собеседований).
В данной статье вопросы и тестовые задания на SQL с собеседований на аналитика.
У некоторых HR есть практика задавать вопросы прямо при телефонном звонке. Сидишь дома, а тут неожиданно звонит HR и задает тебе вопрос по SQL. Некоторые спрашивают про SQL в тестовом задании, а некоторые на техническом интервью.
Стоит отметить, что ответы предоставлены работодателями. Если вы не согласны с каким-то из ответов - пишите в комментариях свой вариант.
Сначала вопросы с ответами:
Назовите типы джойнов в SQL
Ответ:
INNER, JOIN LEFT, JOIN RIGHT, JOIN FULL, JOIN CROSS
Чем NULL отличается от 0
Ответ:
0 - это число.
NULL - это не число, а также NULL не является значением пустой строки. NULL используется для указания того, что данные отсутствуют, неизвестны, неприменимы. NULL не равен ничему, даже другому NULL.
Какие параметры используются в конструкции order by?
Ответ:
ASC и DESC
Какой оператор имеет больший приоритет AND или OR (если они используются совместно)?
Ответ:
AND имеет больший приоритет, нежели OR
Какие операторы обязательны при выборке данных с соединением таблиц (не учитывая cartesian product)?
Ответ:
SELECT, JOIN, FROM
Какие из операторов SQL могут быть использованы для выполнения CRUD (Create, Read, Update, Delete) операций над данными?
Ответ:
INSERT, DELETE, SELECT, UPDATE
С помощью какого запроса можно удалить все записи из таблицы?
Ответ:
DELETE FROM
Для чего нужен оператор UNION?
Ответ:
Для объединения двух таблиц, при условии что каждая имеет одинаковое количество столбцов, столбцы имеют схожие типы данных, столбцы располагаются в том же порядке.
Какой оператор используется для изменения объектов базы данных?
Ответ:
ALTER
Что такое оконная функция? И в чем отличие от функции агрегации с группировкой?
Ответ:
Оконная функция в SQL - функция, которая работает с выделенным набором строк (окном, партицией) и выполняет вычисление для этого набора строк в отдельном столбце.
При использовании агрегирующих функций предложение GROUP BY сокращает количество строк в запросе с помощью их группировки. При использовании оконных функций количество строк в запросе не уменьшается по сравнению с исходной таблицей.
Задачи с ответами:
1) Написать запрос SQL.
Есть 2 таблицы
Persons (Сотрудники)
Positions (должности)
Написать запрос, чтобы получилась таблица вида:
Ответ:
2) Дана пустая таблица publisher с колонками id и name. На id стоит автоинкремент, а Синтаксис name имеет тип varchar(40). Какие из следующих запросов корректно отработают:
- INSERT INTO publisher (name) VALUES ('OREILLY');
- INSERT INTO publisher (name) VALUES ('О Reilly');
- INSERT INTO publisher (name) VALUES ('O'Reilly');
- INSERT INTO publisher (name) VALUES ('O-Reilly');
Ответ:
1, 2, 4
3) Результат объединения запросов выведет все значения из таблицы tab?
- Да
- Нет
Ответ:
2
4) С помощью какого update-запроса можно обновить значения более чем одной колонки?
- UPDATE table_name SET col1_name = 'col1val', col2_name = 'col2val';
- UPDATE table_name SET col1_name = 'col1val' AND SET col2_name = 'col2val';
- UPDATE table_name SET col1_name = 'col1val' SET col2_name = 'col2val';
- Одним запросом можно обновить не более одной колонки
Ответ:
1
5) Дана таблица PERSONS:
Каков будет результат выполнения следующего запроса:
- 150
- 75
- UNKNOWN, поскольку присутствует NULL
- Запрос не выполнится (завершится ошибкой), поскольку присутствует NULL
- 100
Ответ:
5
6) Нарастающий итог
Есть таблица transactions в таком виде:
Где cash_flow — это выручка минус затраты за каждый день.
Нужно написать запрос, чтобы получить нарастающий итог для денежного потока каждый день таким образом, чтобы в конечном итоге получилась таблица в такой форме:
Ответ:
7) Дана таблица CARS:
Каким будет результат следующего запроса:
- red blue null
- 3
- 2 1 1
- 2
Ответ:
4
8) Даны две таблицы:
EMPLOYEES:
TASK:
Таблица EMPLOYEES имеет поле CURRENT_TASK_ID, которое является внешним ключом и ссылается на поле TASK_ID таблицы TASKS. Вывести список, состоящий из имен всех имеющихся сотрудников и их текущих занятий.
- SELECT NAME, COMMENT FROM EMPLOYEES LEFT JOIN TASKS ON CURRENT_TASK_ID = TASK_ID
- SELECT NAME, COMMENT FROM EMPLOYEES, TASKS WHERE CURRENT_TASK_ID = TASK_ID
- SELECT NAME, COMMENT FROM EMPLOYEES, TASKS WHERE JOB_ID = TASK_ID
- SELECT NAME, COMMENT FROM EMPLOYEES RIGHT JOIN TASKS ON CURRENT_TASK_ID = TASK_ID
Ответ:
1
9) Имеется таблица WOMEN
Сколько строк вернет запрос
- Запрос содержит ошибку и не выполнится
- 2
- 1
- 3
- 4
Ответ:
6
10) Какая ошибка в этом запросе?
- Вы не можете использовать арифметические операторы для функции SUM() (например SUM(qty * price))
- Следует использовать знак (=) для подзапроса
- Вы не можете использовать подзапрос для SET внутри оператора UPDATE
- Ключевое слово BETWEEN нельзя использовать для символов или дат
Ответ:
2
Удачи на собеседованиях!
В своем канале Аналитика и Growth mind-set я публикую еще больше тестовых с собеседований.