Ошибка подзапроса функции Select Statement AVG 1242

#sql

#sql

Вопрос:

Я пытаюсь запустить подзапрос в инструкции select, чтобы использовать среднюю функцию. Однако я получаю ошибку 1242 при выполнении подзапроса с предложением group by, которое, как я знаю, вызывает ошибку. Однако, когда я удаляю предложение group by и добавляю его позже в функцию, глобальное среднее значение не усредняется по линейке продуктов. Я не уверен, как заставить мое среднее значение следовать функции group by в коде.

 Select   pl.productline,   year(orderdate),   sum(quantityordered * priceeach) 'Revenue',   avg(quantityordered * priceeach) as 'max rev',   min(quantityordered * priceeach) as 'min rev',   std(quantityordered * priceeach) as 'std of rev',   count(distinct o.ordernumber) 'Annual # of Orders',  (select avg(quantityordered * priceeach) as 'glob rev'  from productlines pl  left join products p on pl.productline = p.productline  left join orderdetails od on p.productcode = od.productcode  group by pl.productline) 'avg global rev' from   productlines pl inner join   products p on pl.productline = p.productline inner join   orderdetails od on p.productcode = od.productcode inner join   orders o on od.ordernumber = o.ordernumber inner join   customers c on o.customernumber = c.customernumber where   country = 'USA' group by   pl.productline, year(orderdate) order by   productline;  

введите описание изображения здесь

Комментарии:

1. Я удалил конфликтующие теги СУБД. Пожалуйста, добавьте только один тег для продукта базы данных, который вы действительно используете (я не могу быть Postgres, так как ваш запрос является недопустимым стандартным SQL и будет отклонен Postgres)

2. Каково фактическое сообщение об ошибке? Ни один (здравомыслящий) разработчик не узнает, что такое «ошибка 1242», особенно если он не знает, какую СУБД вы используете.

3. В общем ANSI/ISO SQL одинарные кавычки предназначены для строковых литералов, а двойные кавычки-для идентификаторов, например "glob rev" .

4. Подзапрос «средний глобальный оборот», скорее всего, вернет более 1 строки, что приведет к ошибке.