#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 строки, что приведет к ошибке.