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

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

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

  1. Цветные принтеры: SELECT * FROM Printer WHERE color = 'y'.
  2. Модели и цены продуктов производителя B через UNION ALL.
  3. Производители ПК, но не ПК-блокнотов: NOT IN.
  4. Производители ПК с процессором ≥ 450 МГц: JOIN.
  5. Средняя скорость ПК: AVG(speed).
  6. Средний размер экрана ноутбуков по производителям: GROUP BY.

🏠 Разбор домашнего задания из урока 30

Все задачи выполняются на учебной схеме с таблицами Product, PC, Laptop и Printer.

1

Цветные принтеры

Найдите все записи таблицы Printer для цветных принтеров.

SELECT *
FROM Printer
WHERE color = 'y';

Строковое значение 'y' заключаем в кавычки. Условие отбирает только цветные принтеры.

2

Модели и цены продуктов производителя B

Найдите номера моделей и цены всех имеющихся в продаже продуктов (любого типа) производителя B.

SELECT DISTINCT model, price
FROM Product
JOIN (
    SELECT model, price FROM PC
    UNION ALL
    SELECT model, price FROM Laptop
    UNION ALL
    SELECT model, price FROM Printer
) AS all_products USING(model)
WHERE maker = 'B';

Внутренний запрос собирает все модели и цены из трёх таблиц. UNION ALL сохраняет дубликаты, если одинаковая модель встречается в разных типах. DISTINCT убирает повторяющиеся пары (model, price) в итоговом результате.

3

Производители ПК, но не ПК-блокнотов

Найдите производителя, выпускающего ПК, но не ПК-блокноты.

SELECT DISTINCT maker
FROM Product
WHERE type = 'PC'
  AND maker NOT IN (
      SELECT maker
      FROM Product
      WHERE type = 'Laptop'
  );

Подзапрос возвращает производителей ноутбуков; NOT IN исключает их из списка производителей ПК.

4

Производители ПК с процессором не менее 450 МГц

Найдите производителей ПК с процессором не менее 450 МГц. Вывести: Maker.

SELECT DISTINCT maker
FROM PC
JOIN Product USING(model)
WHERE speed >= 450;

Соединяем PC и Product по полю model, фильтруем скорость процессора и оставляем уникальных производителей.

5

Средняя скорость ПК

Найдите среднюю скорость ПК.

SELECT AVG(speed) AS avg_speed
FROM PC;

Агрегатная функция AVG() вычисляет среднее значение по столбцу speed.

6

Средний размер экрана ноутбуков по производителям

Для каждого производителя, имеющего модели в таблице Laptop, найдите средний размер экрана выпускаемых им ПК-блокнотов. Вывести: maker, средний размер экрана.

SELECT maker, AVG(screen) AS avg_screen
FROM Laptop
JOIN Product USING(model)
GROUP BY maker;

Соединяем Laptop с Product, группируем по производителю и считаем средний размер экрана. В источнике использован вариант GROUP BY 1 — группировка по первому столбцу в SELECT.

✅ Проверка

  1. Запустите каждый запрос и убедитесь, что он выполняется без ошибок.
  2. Проверьте логику результатов: количество строк, значения агрегатов, правильность фильтров.
  3. Сравните свои решения с разбором выше.