Подтвердить что ты не робот

Что такое хороший вопрос "FizzBuzz" для программиста SQL?

Мы ищем нанять программиста SQL и нуждаемся в хорошем скрининговом вопросе, подобном вопрос FizzBuzz, но для SQL.

Хотя, конечно, можно написать решение FizzBuzz с использованием SQL, я думаю, что усилия неуместны. В вопросе FizzBuzz оцениваются основы кодирования, такие как циклизация, условные выражения, вывод и базовая математика. С SQL я думаю, что более подходящим будет то, что связано с запросами, объединениями, проекциями и т.п. Но, как и в случае с FizzBuzz, это должно быть достаточно простым, чтобы "хорошие" программисты SQL могли написать решение на бумаге через пару минут.

Что такое хороший вопрос "FizzBuzz" для программиста SQL?

4b9b3361

Ответ 1

Обычно мы используем что-то вроде этого как минимум для SQL:

С учетом таблиц:

Клиенты: CustomerID, CustomerName

Заказы: OrderID, CustomerID, ProductName, UnitPrice, Quantity

Рассчитать общее значение заказов для каждого клиента с указанием CustomerName и TotalPrice.

На наш взгляд, это довольно простой вопрос, требующий объединения двух таблиц, группировки и агрегатной функции. Мы поражены тем, как много людей, с которыми мы разговариваем с тем, что, по-видимому, пишем код базы данных в своей работе, не могут вспомнить синтаксис соединения (и нам не важно, какой синтаксис они используют, стиль MSSQL или стиль Oracle или что-то еще).

Что мне нравится в этом вопросе, так это вопрос о том, как

Как вы найдете всех клиентов, заказавших более 1000 долларов? Как бы вы нормализовали эти таблицы? Как бы вы оптимизировали запросы?

Ответ 2

"FizzBuzz" должен быть настолько прост, что любой, кто может программировать вообще, должен иметь возможность его решить, и хороший программист должен решить его почти без размышлений, правильно?

Так может быть что-то вроде этого:

Сначала возьмите две таблицы, Сотрудники и Отделы, с внешним ключом Сотрудники, который показывает, в каком отделе работает каждый сотрудник. (Типичный пример бурения из практически любого учебника базы данных.) Затем пусть они пишут запрос, который включает обе таблицы, такие как "дайте мне имена всех сотрудников, которые работают в отделе чистки".

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

Если они смогут найти, кто работает в отделе чистки, но понятия не имеют, как найти, какие мыши были съедены котом Томом, не нанимайте!

Ответ 3

Я бы, вероятно, сделал что-то, требующее внутреннего соединения, левого соединения и предложения where с условием И и ИЛИ. Также укажите, какие поля вы хотите вернуть. Вы бы хотели узнать, признают ли они, что им нужно левое соединение из описания проблемы, что они используют явный синтаксис соединения и что они используют() для определения значения и/или очистки. Вы также хотели бы посмотреть, использовали ли они select *, даже если вы указали, какие поля вы хотели.

Ответ 4

Придерживайтесь fizzbuzz, просто измените число от 100 до 10000000 и скажите, что решение должно быть достаточно эффективным.

Ответ 5

SQL Developer или SQL DBA? для разработчика что-то о курсорах; синтаксис - это боль, и хороший может спросить, почему вам нужно его использовать. Для dba дайте им курсор и попросите их исправить его;)