← К оглавлению занятия

🏠 Домашнее задание

⚡ Кратко: домашнее задание

  1. Рассчитайте net_price с точностью до копеек.
  2. Соберите текстовый отчёт о товаре.
  3. Преобразуйте строку в число для расчёта.
  4. Выведите дату в формате строки.
  5. Классифицируйте сотрудников по is_manager.

🏠 Домашнее задание

Для выполнения домашнего задания используется база данных с доступом на чтение: hostname: ich-db.edu.itcareerhub.de, username: ich1, password: password.

1

Задание 1

Таблица order_details. Рассчитайте полную стоимость строки заказа после скидки (net_price) с точностью до двух знаков после запятой. Используйте CAST или DECIMAL.

2

Задание 2

Таблица products. Создайте текстовый отчёт вида 'Product: [name], Stock: [N], Price: $[price]', преобразовав числовые значения в строки.

3

Задание 3

Таблица products. Предположим, что unit_in_stock хранится как текст. Преобразуйте его в целое число и рассчитайте общую стоимость запаса: unit_in_stock * list_price.

4

Задание 4

Таблица orders. Выведите order_date в текстовом формате 'YYYY-MM' двумя способами: через строковую функцию LEFT и через CAST(order_date AS CHAR) с последующим извлечением части строки.

5

Задание 5

Таблица employees. Добавьте столбец role: 'Manager', если is_manager = 1, и 'Employee' в противном случае. Убедитесь, что сравнение происходит с числом, а не со строкой.

🛠️ Подготовка окружения

  1. Откройте DBeaver или MySQL Workbench.
  2. Подключитесь к учебной базе ich-db.edu.itcareerhub.de с учётными данными ich1 / password.
  3. Выполните USE northwind;.
  4. Создайте файл homework_3.sql.

📝 Пошаговое решение

1

Шаг 1 — подключение

USE northwind;
2

Шаг 2 — расчёт с фиксированной точностью

SELECT order_id,
       CAST((unit_price * quantity) - (unit_price * quantity * discount)
            AS DECIMAL(10, 2)) AS net_price
FROM order_details;
3

Шаг 3 — текстовый отчёт

SELECT CONCAT('Product: ', product_name,
              ', Stock: ', CAST(unit_in_stock AS CHAR),
              ', Price: $', CAST(list_price AS CHAR)) AS product_report
FROM products;
4

Шаг 4 — преобразование текста в число

SELECT product_name,
       CAST(unit_in_stock AS SIGNED) * list_price AS total_value
FROM products;
5

Шаг 5 — дата в строковом формате

-- Способ 1
SELECT LEFT(order_date, 7) AS year_month
FROM orders;

-- Способ 2
SELECT LEFT(CAST(order_date AS CHAR), 7) AS year_month
FROM orders;
6

Шаг 6 — роль сотрудника

SELECT id, first_name, last_name,
       CASE
           WHEN is_manager = 1 THEN 'Manager'
           ELSE 'Employee'
       END AS role
FROM employees;

✅ Проверка

  1. В задании 1 net_price имеет ровно два знака после запятой.
  2. В задании 3 результат умножения — число, а не строка.
  3. В задании 4 оба способа дают одинаковый формат YYYY-MM.
  4. В задании 5 сравнение идёт с числом 1, а не со строкой '1' или 'TRUE'.
  5. Сохраните файл homework_3.sql и загрузите на платформу.