|
Почему данный запрос не работает
|
|||
---|---|---|---|
#18+
Добрый день! Пытаюсь решить задачу на тренажёре, но не могу получить правильный ответ. Помогите найти ошибку в запросе. Условие следующее: "Найти округленное до сотых долей среднее арифметическое следующих цен: 1. Цена самых дешевых Laptop-ов от производителей РС с самой низкой скоростью CD; 2. Цена самых дорогих РС от производителей самых дешевых принтеров; 3. Цена самых дорогих принтеров от производителей Laptop-ов с наибольшим объемом памяти. Замечание: При расчёте среднего отсутствующие цены не учитывать." Инфо о базе данных: Схема БД состоит из четырех таблиц: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed, ram, hd, price, screen) Printer(code, model, color, type, price) Таблица Product представляет производителя (maker), номер модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' - принтер). Предполагается, что номера моделей в таблице Product уникальны для всех производителей и типов продуктов. В таблице PC для каждого ПК, однозначно определяемого уникальным кодом – code, указаны модель – model (внешний ключ к таблице Product), скорость - speed (процессора в мегагерцах), объем памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах), скорость считывающего устройства - cd (например, '4x') и цена - price. Таблица Laptop аналогична таблице РС за исключением того, что вместо скорости CD содержит размер экрана -screen (в дюймах). В таблице Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена - price. Подсказка к задаче: Не забыли, что столбец CD имеет строковый тип данных? Моё решение: SELECT CAST(SUM(query_1.price)/COUNT(CASE WHEN query_1.price IS NOT NULL THEN 1 ELSE 0 END) AS DEC(12,2)) AS avg_val FROM (SELECT TOP 1 price FROM Product INNER JOIN Laptop ON Product.model = Laptop.model WHERE maker IN ( SELECT DISTINCT maker FROM Product JOIN PC ON Product.model = PC.model WHERE type = 'PC' AND cd IN ( SELECT TOP 1 cd FROM PC ORDER BY cd)) ORDER BY price UNION ALL SELECT TOP 1 price FROM Product INNER JOIN PC ON Product.model = PC.model WHERE maker IN ( SELECT DISTINCT maker FROM Product JOIN Printer ON Product.model = Printer.model WHERE Product.type = 'Printer' AND price = ( SELECT TOP 1 price FROM Printer ORDER BY price)) ORDER BY price DESC UNION ALL SELECT TOP 1 price FROM Product INNER JOIN Printer ON Product.model = Printer.model WHERE maker IN ( SELECT DISTINCT maker FROM Product JOIN Laptop ON Product.model = Laptop.model WHERE Product.type = 'Laptop' AND ram = ( SELECT TOP 1 ram FROM Laptop ORDER BY price DESC)) ORDER BY price DESC) AS query_1 Ответ: Неверно. Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе. * Несовпадение данных (1) Результат выполнения Вашего запроса: avg_val 693.33 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2022, 16:22 |
|
Почему данный запрос не работает
|
|||
---|---|---|---|
#18+
Задачи с sql-ex.ru нужно решать самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2022, 17:27 |
|
Почему данный запрос не работает
|
|||
---|---|---|---|
#18+
" Помогите найти ошибку в запросе", помогаем: Во-первых - слишком короткий запрос. Шаг №1: этот запрос в ообщении нельзя как-то оформить, чтобы не был сплошным текстом? Пишите, время пошло! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2022, 18:40 |
|
Почему данный запрос не работает
|
|||
---|---|---|---|
#18+
Ролг Хупин, Уже не актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 12:09 |
|
|
start [/forum/topic.php?fid=46&fpage=4&tid=1683885]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 155ms |
0 / 0 |