20 вопросов и задач по SQL на собеседовании с ответами
От автора Telegram-канала Аналитика и Growth mind-set (там публикую еще больше вопросов и тестовых задач с собеседований).
В данной статье вопросы и тестовые задания на SQL с собеседований на аналитика.
У некоторых HR есть практика задавать вопросы прямо при телефонном звонке. Сидишь дома, а тут неожиданно звонит HR и задает тебе вопрос по SQL. Некоторые спрашивают про SQL в тестовом задании, а некоторые на техническом интервью.
Стоит отметить, что ответы предоставлены работодателями. Если вы не согласны с каким-то из ответов - пишите в комментариях свой вариант.
Сначала вопросы с ответами:
Ответ:
INNER, JOIN LEFT, JOIN RIGHT, JOIN FULL, JOIN CROSS
Ответ:
0 - это число.
NULL - это не число, а также NULL не является значением пустой строки. NULL используется для указания того, что данные отсутствуют, неизвестны, неприменимы. NULL не равен ничему, даже другому NULL.
Ответ:
ASC и DESC
Ответ:
AND имеет больший приоритет, нежели OR
Ответ:
SELECT, JOIN, FROM
Ответ:
INSERT, DELETE, SELECT, UPDATE
Ответ:
DELETE FROM
Ответ:
Для объединения двух таблиц, при условии что каждая имеет одинаковое количество столбцов, столбцы имеют схожие типы данных, столбцы располагаются в том же порядке.
Ответ:
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 я публикую еще больше тестовых с собеседований.
Девушка,спасибо Вам огромное за такую замечательную статью❤️
Как же мало нужно знать аналитику...
Комментарий недоступен
Испорченный телефон какой-то получился: вместо
INNER, JOIN LEFT, JOIN RIGHT, JOIN FULL, JOIN CROSS
должно быть
INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN
Как будто текст не проверил тот, кто знает SQL.
Спасибо за эту веселую и поучительную (я понял какой результат у оконной функции) статью. Особенно повеселил девятый вопрос, в котором из пяти возможных правильным оказался шестой ответ. :-)
спасибо за замечание, увидела это ранее, но отредактировать не могу. у статьи прошел срок давности.
С 9 примером беда ))
спасибо за замечание, увидела это ранее, но отредактировать не могу. у статьи прошел срок давности.
1 задача где нужно написать SQL ответ неверен.
В том виде, в котором составлены таблицы, запрос из ответа к задаче должен будет вывести:
id | name | pos_title
1 | Владимир | Дизайнер
2 | Татьяна | Программист
А если нужно чтобы в ответе получилась таблица как из условия задачи, то нужно либо поменять значения в ряде записей, либо переписать запрос с более хитрой логикой.
"Какие операторы обязательны при выборке данных с соединением таблиц (не учитывая cartesian product)?
SELECT, JOIN, FROM"
Явно же некорректный ответ.
По диагонали некоторые ответы в задачах тоже не корректны, по меньшей мере в некоторых реализациях СУБД
Как бы вы ответили на этот вопрос?
Как минимум неточность атом, что JOIN не обязательный параметр.
Он конечно желателен, но можно и без него
Я бы его не задал)
Я обычно простую задачку даю. Да и то обычно не решает её никто почему то) Выучить теоретический ответ дело неплохое, но мне интереснее как человек применять будет.
Не знаю на кого рассчитаны эти вопросы, но подавляющее большинство мидл тестеров современных не ответит по меньшей мере на половину вопросов и задач этих точно
Почему?
Потому, думать надо.
Алексей, спасибо за комментарий.
Я бы тоже ответила по другому на данный вопрос.
Но тут стоит отметить, что ответы на все вопросы предоставлены работодателями.
Комментарий удален модератором
Комментарий недоступен
В 9 вопросе указан ответ 6, но дано только 5 вариантов ответов. Что подразумевается под ответом "6"?
Выше в комментариях уже про него писали, исправить уже не могу - vc не дает отредактировать.
9 вопрос убил.
1. Не видно полностью картинку.
2. Ответов всего 5, а верный ответ 6
Выше в комментариях уже про это писали, исправить не могу - vc не дает отредактировать.
Сайт с практическими задачами по SQL https://sqltest.online/ru проверьте свой уровень