Упражнение 3 (рейтинговый этап)

Для таблицы Product получить результирующий набор в виде таблицы со столбцами maker, pc, laptop и printer, в которой для каждого производителя требуется указать, производит он (yes) или нет (no) соответствующий тип продукции. В первом случае (yes) указать в скобках без пробела количество имеющихся в наличии (т.е. находящихся в таблицах PC, Laptop и Printer) различных по номерам моделей соответствующего типа.

 Если производитель выпускает модели некоторого типа, но ни одной из них нет в наличии, то, согласно формулировке, результат должен быть

yes(0),

а не

no

Многие находят «ошибку» в тестовом решении. Претензии сводятся к следующему запросу:

SELECT COUNT(*)
FROM Product
WHERE Maker = 'E' AND type='PC';
mssql
🚫
[[ error ]]
[[ column ]]
[[ value ]]
который дает 3 модели ПК для производителя Е, в то время как «правильный ответ» дает только одну модель компьютера для этого производителя. Вернемся к формулировке, в которой сказано:

«…указать в скобках без пробела количество имеющихся в наличии (т.е. находящихся в таблицах PC, Laptop и Printer) различных по номерам моделей соответствующего типа…»

Это в нашем случае означает, что в скобках требуется указать число различных моделей ПК производителя Е в таблице PC. На языке SQL это можно записать так:

SELECT COUNT(DISTINCT pc.model)
FROM Product pr
    JOIN PC ON pr.model=pc.model
WHERE Maker = 'E';
mssql
🚫
[[ error ]]
[[ column ]]
[[ value ]]
т.е.

1

Решить задачу на SQL-EX.RU