Почему у этого запроса есть ошибка в Oracle, но верна в MySQL?Не единичная групповая функция oracle sum с суммой подзапроса
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;
Почему у этого запроса есть ошибка в Oracle, но верна в MySQL?Не единичная групповая функция oracle sum с суммой подзапроса
SELECT (select sum(total)
FROM invoices) + sum(total)
FROM invoices;
Почему этот запрос содержит ошибку в оракула и MySQL правильно
Поскольку MySQL является своего рода разрешительным о смешивании агрегат и не агрегатные столбцы.
Цитирую the documentation:
В стандартном SQL, запрос, который включает в себя предложения GROUP BY не может ссылаться на неагломерированных столбцов в списке выбора, не указанным в пункте GROUP BY.
[...]
MySQL расширяет применение GROUP BY так, чтобы выбрать список может относиться к неагломерированным столбцам не указанным в GROUP BY предложения.
[...]
это полезно в первую очередь, когда все значения в каждом столбце неагломерированных не указанный в GROUP BY являются одинаковыми для каждой группы. Сервер может свободно выбирать любое значение из каждой группы, поэтому, если они не совпадают, выбранные значения являются неопределенными.
(select sum(total) FROM invoices)
это выражение, это не агрегатной функции и не существует в GROUP BY (на самом деле вы не можете использовать подзапросы в GROUP BY)
Таким образом, вы пытаетесь смешать агрегат и тем не совокупные выражения вместе.
Если вы ищете рабочую версию в Oracle, вы можете сделать:
select sum(total) + sum(total)
from invoices;
Какого бы лучшим решением в MySQL, а также. –