💻 Примеры
⚡ Кратко: примеры
- Фильтрация:
WHERE price < 500,IN ('12x','24x'). - JOIN: связь Product с Laptop/Printer по
model. - Группировка:
GROUP BY hd HAVING COUNT(*) >= 2. - Подзапросы:
price = (SELECT MAX(price) FROM Printer). - Самосоединение:
PC AS pc1 JOIN PC AS pc2с условиемpc1.model > pc2.model.
📖 Фильтрация
Пример 1. ПК дешевле 500 долларов
Найдём номер модели, скорость и размер жёсткого диска для всех ПК стоимостью менее 500 дол.
SELECT model, speed, hd
FROM PC
WHERE price < 500;
Пример 2. Производители принтеров
Используем DISTINCT, чтобы каждый производитель встретился один раз.
SELECT DISTINCT maker
FROM Product
WHERE type = 'Printer';
Пример 3. Дорогие ноутбуки
Выберем модели ноутбуков с ценой выше 1000 дол.
SELECT model, ram, screen
FROM Laptop
WHERE price > 1000;
Пример 4. ПК с определённым CD и ценой
Сочетание условий через AND и IN.
SELECT model, speed, hd
FROM PC
WHERE price < 600
AND cd IN ('12x', '24x');
📖 JOIN
Пример 5. Производители и скорости ноутбуков
Для каждого производителя, выпускающего ноутбуки с жёстким диском не менее 10 Гбайт, найдём скорости таких ноутбуков.
SELECT DISTINCT maker, speed
FROM Product
JOIN Laptop USING (model)
WHERE hd >= 10;
📖 Подзапросы
Пример 6. Самые дорогие принтеры
Подзапрос находит максимальную цену, внешний запрос — модели с такой ценой.
SELECT model, price
FROM Printer
WHERE price = (SELECT MAX(price) FROM Printer);
Пример 9. Ноутбуки медленнее любого ПК
Сравним скорость ноутбука с минимальной скоростью ПК.
SELECT DISTINCT type, model, speed
FROM Laptop
LEFT JOIN Product USING (model)
WHERE speed < (SELECT MIN(speed) FROM PC);
Пример 10. Самые дешёвые цветные принтеры
Найдём минимальную цену среди цветных принтеров и выведем их производителей.
SELECT DISTINCT maker, price
FROM Printer
JOIN Product USING (model)
WHERE price = (SELECT MIN(price) FROM Printer WHERE color = 'y')
AND color = 'y';
📖 Группировка
Пример 7. Жёсткие диски, встречающиеся у двух и более ПК
Группируем по объёму жёсткого диска и оставляем только те группы, где две и более модели.
SELECT hd
FROM PC
GROUP BY hd
HAVING COUNT(model) >= 2;
📖 Самосоединение
Пример 8. Пары ПК с одинаковой скоростью и RAM
Соединяем таблицу 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;