Комментарии 15
По оформлению - потрясающе безграмотный опус. Такое впечатление, что запятые расставлял ГСЧ. Ну и в остальном не без нареканий.
По содержанию - совершенно бесполезное творение. ИМХО, конечно. Ибо неспособно научить ничему в принципе, хотя бы потому что не учит. Вот просто не учит и всё, нигде по тексту, ни в одной буковке. В принципе. А вероятность получения на собеседовании именно опубликованной задачи - практически нулевая.
Ибо неспособно научить ничему в принципе, хотя бы потому что не учит. Вот просто не учит и всё, нигде по тексту, ни в одной буковке.
Ну так-то сборник задачек во все времена подразумевался как подспорье к самостоятельному изучению и сам по себе ничему не учит. Решаешь задачу, с ходу не получается - лезешь в документацию, чтоб найти что-то подходящее под алгоритм, что держишь в голове. Другое дело, что и задачек здесь очень мало и нет обычного плавного нарастания сложности (да и вообще сложных задачек нет, только немножко базы). Лет 15 назад видел в инторнетах сборник задач по SQL, как раз для подобных целей, там их было значительно больше.
Ну так-то сборник задачек во все времена подразумевался как подспорье к самостоятельному изучению и сам по себе ничему не учит.
Вот только не надо лукавить. В обучающем сборнике, в том, который "как подспорье к самостоятельному изучению", во все времена публикуемые задачки размещались по разделам, и каждый раздел содержал задачки по одной достаточно узкой тематике, для которой было не так уж и сложно (даже во аналоговые времена, с бумажными книгами) найти теорию.
Задача 3: если товаров с одинаковой ценой удовлетворяющей условию будет больше одного, предложенный запрос все равно вернет только одну запись, что обычно имеет мало смысла. Ибо еслиб нужны были не записи заказов, а именно что цена, то и вопрос бы звучал по другому.
Задача 4: Когда требуется период по дате, надо период и задавать в условии, ибо в предложенном варианте индекс по полю OrderDate (если он есть) использоваться не будет и придется делать фулл-скан таблицы.
Задачи 4 и 5 по-сути одно о тоже, в 5 нет новой механики, знание которой-бы хотелось проверить.
Эта публикация сильно выиграет, если вступление (больше похожее на SEO текст) сократить до одного абзаца, уменьшить количество рекламы, и добавить хоть какие-то объяснения к приведенным запросам. Заодно поправив их по замечаниям выше.
Вывести список имен клиентов (CustomerName), даты заказов (OrderDate), и кол-во заказов
А какую именно дату выводить? В ответе несколько заказов ведь выходит, какой смысл выводить одну из результирующих дат? А группировка идёт по имени, а не по дате...
Очень много воды, задачи однотипные и совсем уж на джуна, если говорить о программистах. Если посыл был, что можно проверять например аналитиков или ещё кого то, на умение думать, то он не раскрыт, т.к. все сводится к знанию синтаксиса.
Наверное, всё же это верно наполовину... да, только на знании синтаксиса и более-менее понимании, как оно выполняется, можно написать запрос - но только если он сравнительно прост. Как только запрос более-менее сложен (особенно для эффективности если нужно использовать CTE и оконные функции) - решение на голом знании синтаксиса оказывается настолько монстрообразным, что остаётся только за голову хвататься.
Вот как пример, совсем недавно столкнулся. Есть юзер-значение, надо поделить на группы с равным значением и добавить 2 колонки - номер группы и количество юзеров в группе. Вроде тривиально - оконные SUM и DENSE_RANK... но товарищ на голом синтаксисе такого наворотил! хотя следует признать - результат был правильный, пусть и считался долго.
Сколько не решал эти задачки на sql, все равно в практике их не использую и забываю синтаксис всякий раз когда нужно написать запрос.
Ну как бы реклама, ничего более. На собедованиях реально задач такого уровня не встречал. На инженера тех поддержки только если?
Это задачи для джуна? В универе за такую легкотню почти не ставят баллов, на втором курсе люди наверное сеньорами становятся за 3 месяца?
Кстати, первая задача - не пишите так, это не саргабельно в общем случае.
Пишите :
SELECT CustomerName, City FROM Customers WHERE City LIKE 'S%[^n]';
Ну можно SQL Academy погонять, там и теория есть и куча задач по нарастающей сложности - но если в работе не используется, то начинает забываться)
Когда SQL решает, и задачки для прокачки