Текст задания:
Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM.
Вывести: Maker.
Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM.
Вывести: Maker.
Решение:
SELECT DISTINCT maker
FROM product
WHERE model IN (
SELECT model
FROM pc
WHERE ram = (
SELECT MIN(ram)
FROM pc
)
AND speed = (
SELECT MAX(speed)
FROM pc
WHERE ram = (
SELECT MIN(ram)
FROM pc
)
)
)
AND
maker IN (
SELECT maker
FROM product
WHERE type='printer'
);
Анализ плана выполнения запроса:
Стоимость: 0.03169197961688.
Количество операций: 16.
Стоимость: 0.03169197961688.
Количество операций: 16.
SELECT DISTINCT maker
ОтветитьУдалитьFROM product
WHERE maker IN (
SELECT p.maker
FROM product as p INNER JOIN pc as pc ON p.model=pc.model
WHERE ram =(
SELECT MIN(ram)
FROM pc
) AND
pc.speed=(
SELECT MAX(speed)
FROM pc
WHERE speed IN (
SELECT speed
FROM pc
WHERE ram=(
SELECT MIN(ram) FROM pc))))
AND type='printer'
with data as (Select maker, ram, speed from product
ОтветитьУдалитьjoin pc on pc.model=product.model
where type='PC' and maker in
(select maker from product where type='Printer')and ram=(select min(ram) from pc))
select distinct maker from data
where speed=(select max(speed) from data)
cost 0.039824958890676
operations 20
select distinct maker
ОтветитьУдалитьfrom product
where maker in (
select maker
from product
where model in (
select model
from PC
where ram in (
select min(ram)
from PC)
and speed in (
select max(speed)
from PC
where ram in (
select min(ram)
from PC
)
)
)
)
and type='Printer';
прошу прощения, продублировал решение @callian91
УдалитьSELECT DISTINCT Product.maker
ОтветитьУдалитьFROM PC
JOIN Product
ON Product.model = PC.model
WHERE maker IN (SELECT maker
FROM Product
WHERE type = 'PC' AND maker IN (SELECT maker
FROM Product
WHERE type = 'Printer'))
AND PC.RAM <= (SELECT MIN (PC.RAM)
FROM PC)
AND PC.speed = (SELECT MAX(speed)
FROM PC
WHERE RAM <= (SELECT MIN (PC.RAM)
FROM PC))