Л А Б О Р А Т О Р И Я

актуальных

РЕШЕНИЙ


MySQL - TEST

решение тестовой задачи MySQL

Нашел на просторах Интернета тестовую задачу, которую предлагала реализовать одна WEB-студия своим кандидатам на вакансию. Задачка показалась интересной, решил обдумать и реализовать.

Описание задачи:

"Вывести две колонки, в первой - названия месяцев текущего года, во второй - количество дней в месяце. Не использовать для решения какие либо таблицы, в том числе и временные. Код должен выдавать ответ сразу после запуска из консоли SQL редактора."

Размышления над реализацией позволили выявить следующее:

  1. Название месяца можно получить используя функцию MONTHNAME(), которая возвращает название месяца для заданной даты.
  2. Количество дней в месяце можно получить номером последнего дня месяца используя функцию DAY(), которая возвращает номер дня месяца из даты.
  3. Получить последний день месяца можно используя функцию LAST_DAY(), которая вернет последний день месяца для указанной даты.
  4. Всего у нас 12 месяцев, количество дней разное, но каждый месяц имеет дату 01 - первое число месяца. Поэтому за текущую дату для расчета в каждом месяце можно брать первое число.
  5. Получить дату месяца текущего года можно используя функцию CONCAT, которая склеивает подстроки, в частности год, номер месяца и число месяца.
  6. Чтобы получить результат требуется обработать в каждом месяце дату первого числа, и так 12 раз - это можно осуществить используя рекурсию. Для реализации использую рекурсивное общее табличное выражение WITH RECURSIVE.

Вот такая итоговая реализация получилась:

Result MySQL

Удачи в разработке!



другие материалы: