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

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

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

  1. Подключитесь к northwind и выберите все строки из suppliers.
  2. Создайте столбец category в order_details через CASE и IF.
  3. Вычислите total_price для строк с незаполненным purchase_order_id.
  4. Составьте ФИО сотрудников и выведите 3 строки, начиная со второй.
  5. Выведите год-месяц из order_date и уникальные компании по убыванию.

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

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

1

Задание 1

Выберите все строки из таблицы suppliers. Предварительно подключитесь к базе данных northwind.

2

Задание 2

Выведите столбцы id, order_id из таблицы order_details, а также вычисляемый столбец category в зависимости от значений unit_price. Если unit_price > 10, то значение столбца category'Expensive', в противном случае — 'Cheap'. Напишите запрос двумя способами — с применением операторов IF и CASE.

3

Задание 3

Выведите все строки, где purchase_order_id не указано. При этом дополнительно создайте столбец total_price как произведение quantity * unit_price.

4

Задание 4

Выведите один столбец из таблицы employees, содержащий имя и фамилию, написанные через пробел. Выведите 3 строки, начиная со второй.

5

Задание 5

На основе таблицы orders выведите один столбец — с годом и месяцем из order_date в формате 'год-месяц'.

6

Задание 6

Выведите уникальные имена компаний из таблицы customers. Отсортируйте их по убыванию.

7

Задание 7

Отформатируйте стиль написания запросов.

8

Задание 8

Сохраните запросы в виде файла с расширением .sql и загрузите на платформу.

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

  1. Откройте DBeaver или MySQL Workbench.
  2. Создайте подключение к учебной базе: хост ich-db.edu.itcareerhub.de, пользователь ich1, пароль password.
  3. Выполните USE northwind; или указывайте схему в запросах.
  4. Создайте новый SQL-скрипт и сохраните его как homework_2.sql.

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

1

Шаг 1

USE northwind;

SELECT *
FROM suppliers;
2

Шаг 2

-- Способ 1: CASE
SELECT
    id,
    order_id,
    CASE
        WHEN unit_price > 10 THEN 'Expensive'
        ELSE 'Cheap'
    END AS category
FROM order_details;

-- Способ 2: IF (MySQL)
SELECT
    id,
    order_id,
    IF(unit_price > 10, 'Expensive', 'Cheap') AS category
FROM order_details;
3

Шаг 3

SELECT *,
       quantity * unit_price AS total_price
FROM order_details
WHERE purchase_order_id IS NULL;
4

Шаг 4

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees
LIMIT 3 OFFSET 1;
5

Шаг 5

SELECT LEFT(order_date, 7) AS year_month
FROM orders;

-- Альтернативный вариант
SELECT SUBSTRING(order_date, 1, 7) AS year_month
FROM orders;
6

Шаг 6

SELECT DISTINCT company
FROM customers
ORDER BY company DESC;

✅ Проверка

  1. Выполните каждый запрос в DBeaver.
  2. Убедитесь, что в задании 2 оба варианта дают одинаковый результат.
  3. В задании 4 проверьте, что возвращается ровно 3 строки и первая из них — вторая строка исходной таблицы после сортировки (если сортировка не задана, порядок может меняться).
  4. В задании 6 убедитесь, что компании не повторяются и отсортированы по убыванию.
  5. Сохраните файл и загрузите на платформу.