Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Задача со подсчетом среднего значения  [new]
const_student
Member

Откуда:
Сообщений: 11
Здравствуйте!

Решаю задание на http://www.sql-ex.ru/
Условия задачи:
Схема БД состоит из четырех таблиц:
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.

Найдите среднюю цену ПК и ПК-блокнотов, выпущенных производителем A (латинская буква). Вывести: одна общая средняя цена.

Запрос:
SELECT AVG(price)
FROM
(SELECT price
FROM laptop lp 
INNER JOIN Product p ON lp.model = p.model
WHERE p.maker = 'A'

UNION ALL

SELECT price
FROM PC
INNER JOIN Product p ON PC.model = p.model
WHERE p.maker = 'A')

выдает ошибку: Incorrect syntax near ')'
Не подскажите, почему? Подзапрос выполнял отдельно, все в порядке - выводит список цен.
17 дек 18, 18:13    [21766290]     Ответить | Цитировать Сообщить модератору
 Re: Задача со подсчетом среднего значения  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36901
Модератор: В качестве исключения.


SELECT AVG(price)
FROM
(SELECT price
FROM laptop lp 
INNER JOIN Product p ON lp.model = p.model
WHERE p.maker = 'A'

UNION ALL

SELECT price
FROM PC
INNER JOIN Product p ON PC.model = p.model
WHERE p.maker = 'A') a


Сообщение было отредактировано: 17 дек 18, 18:17
17 дек 18, 18:17    [21766292]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить