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

✅ Решения

⚡ Кратко: решения

  • Задания 1–4: фильтрация через WHERE и IN.
  • Задание 5: JOIN Product ... USING (model).
  • Задания 6, 9, 10: подзапросы с MIN/MAX.
  • Задание 7: GROUP BY hd HAVING COUNT(model) >= 2.
  • Задание 8: самосоединение PC с условием model1 > model2.
  • Дополнительные: группировка, JOIN PC и Laptop, пересечение производителей.
1

Решение задания 1

Фильтруем строки таблицы PC по цене.

SELECT model, speed, hd
FROM PC
WHERE price < 500;
2

Решение задания 2

Выбираем уникальных производителей из Product, оставляя только принтеры.

SELECT DISTINCT maker
FROM Product
WHERE type = 'Printer';
3

Решение задания 3

Фильтруем ноутбуки по цене.

SELECT model, ram, screen
FROM Laptop
WHERE price > 1000;
4

Решение задания 4

Комбинируем два условия: цена и скорость CD.

SELECT model, speed, hd
FROM PC
WHERE price < 600
  AND cd IN ('12x', '24x');
5

Решение задания 5

Соединяем Product и Laptop по модели и фильтруем ноутбуки по объёму диска.

SELECT DISTINCT maker, speed
FROM Product
JOIN Laptop USING (model)
WHERE hd >= 10;
6

Решение задания 6

Подзапрос находит максимальную цену принтера.

SELECT model, price
FROM Printer
WHERE price = (SELECT MAX(price) FROM Printer);
7

Решение задания 7

Группируем по размеру жёсткого диска и отбираем группы с двумя и более моделями.

SELECT hd
FROM PC
GROUP BY hd
HAVING COUNT(model) >= 2;
8

Решение задания 8

Самосоединение таблицы PC. Условие pc1.model > pc2.model исключает зеркальные пары.

SELECT DISTINCT pc1.model, pc2.model, pc1.speed, pc1.ram
FROM PC AS pc1
JOIN PC AS pc2
  ON pc1.speed = pc2.speed
 AND pc1.ram   = pc2.ram
 AND pc1.model > pc2.model;
9

Решение задания 9

Ноутбук медленнее любого ПК, если его скорость меньше минимальной скорости ПК.

SELECT DISTINCT type, model, speed
FROM Laptop
LEFT JOIN Product USING (model)
WHERE speed < (SELECT MIN(speed) FROM PC);
10

Решение задания 10

Соединяем Printer и Product, выбираем цветные принтеры с минимальной ценой.

SELECT DISTINCT maker, price
FROM Printer
JOIN Product USING (model)
WHERE price = (SELECT MIN(price) FROM Printer WHERE color = 'y')
  AND color = 'y';
11

Решение задания 11

Средняя цена ПК каждого производителя.

SELECT maker, AVG(price) AS avg_price
FROM Product
JOIN PC USING (model)
WHERE type = 'PC'
GROUP BY maker;
12

Решение задания 12

Пары ПК и ноутбуков с одинаковой скоростью. Здесь зеркальных пар нет, потому что модели из разных таблиц.

SELECT DISTINCT pc.model AS pc_model, laptop.model AS laptop_model, pc.speed
FROM PC AS pc
JOIN Laptop AS laptop ON pc.speed = laptop.speed;
13

Решение задания 13

Производители, у которых есть и ПК, и ноутбуки.

SELECT DISTINCT p1.maker
FROM Product AS p1
JOIN Product AS p2 ON p1.maker = p2.maker
WHERE p1.type = 'PC'
  AND p2.type = 'Laptop';