Skip to content

Files

Latest commit

5ade740 · Sep 27, 2023

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

10.4. Домашняя работа 10.1

Цель задания

Научиться подключать MySQL в проекте и писать запрос в коде.

Что нужно сделать

Напишите код, который выведет среднее количество покупок в месяц для каждого курса за 2018 год. Учитывайте диапазон месяцев, в течение которого были продажи. Подробнее в примере.

Старайтесь использовать только SQL, при этом группировку по месяцам можно сделать и с помощью Java.

Пример расчёта для курса «Веб-разработчик c нуля до PRO»

SELECT pl.course_name, pl.subscription_date FROM PurchaseList pl
WHERE pl.course_name = "Веб-разработчик c 0 до PRO"
ORDER BY pl.subscription_date;
+----------------------------+---------------------+
| course_name                | subscription_date   |
+----------------------------+---------------------+
| Веб-разработчик c 0 до PRO | 2018-01-02 00:00:00 |
| Веб-разработчик c 0 до PRO | 2018-02-16 00:00:00 |
| Веб-разработчик c 0 до PRO | 2018-04-02 00:00:00 |
| Веб-разработчик c 0 до PRO | 2018-05-17 00:00:00 |
| Веб-разработчик c 0 до PRO | 2018-07-01 00:00:00 |
| Веб-разработчик c 0 до PRO | 2018-08-15 00:00:00 |
+----------------------------+---------------------+

Курсы продавались с января по август, то есть восемь месяцев. Всего было продано шесть подписок. Значит, среднее значение продаж для курса «Веб-разработчик c нуля до PRO» = 0,75.

Для получения значения месяца из даты в числовом значении используйте функцию

MONTH(date_value)

https://oracleplsql.ru/function-sql-server-month.html

Пример использования:

SELECT * FROM Students s
WHERE MONTH(s.registration_date ) = 4;

запрос выведет всех студентов, зарегистрированных в апреле:

+----+--------------------+------+---------------------+
| id | name               | age  | registration_date   |
+----+--------------------+------+---------------------+
| 14 | Кутяков Ефрем      |   31 | 2016-04-01 00:00:00 |
| 15 | Бондарев Игорь     |   32 | 2016-04-08 00:00:00 |
| 16 | Журавлев Севастьян |   33 | 2016-04-15 00:00:00 |
| 17 | Иньшов Геннадий    |   34 | 2016-04-22 00:00:00 |
| 18 | Шабанов Клавдий    |   35 | 2016-04-29 00:00:00 |
| 67 | Бугаков Валерий    |   34 | 2017-04-07 00:00:00 |
| 68 | Гайденко Илья      |   35 | 2017-04-14 00:00:00 |
| 69 | Перехваткин Сергей |   36 | 2017-04-21 00:00:00 |
| 70 | Барсуков Виктор    |   37 | 2017-04-28 00:00:00 |
+----+--------------------+------+---------------------+
  • Если у вас ошибка не назначенного часового пояса.
ERROR: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specific time zone value if you want to utilize time zone support.

Решение:
Добавьте в вашу строку соединения с базой данных параметр, указывающий часовой пояс, serverTimezone=UTC или укажите конкретный часовой пояс, например serverTimezone=Europe/Moscow.

Ваша строка будет выглядеть так:
jdbc:mysql://localhost:3306/skillbox?useSSL=false&serverTimezone=UTC

Критерии оценки

«Зачёт» — в консоль выводятся средние количества покупок курсов в месяц за 2018 год.
«Незачёт» — задание не выполнено.