#sql #oracle #group-by
#sql #Oracle #группировка по
Вопрос:
Я пытаюсь создать представление, используя некоторую функцию o group, такую как sum, avg и т. Д. выдает ошибку.
create view sample_view as
select A,B,C,D,E,
(a b c d e)/5 as Mean_value,
GREATEST(a,b,c,d,e)-LEAST(a,b,c,d,e) as range_value,
avg(mean_value)
from samples;
Я получаю сообщение об ошибке ниже.
Error starting at line : 37 in command -
create view sample_view as select A,B,C,D,E, (a b c d e)/5 as Mean_value, GREATEST(a,b,c,d,e)-LEAST(a,b,c,d,e) as range_value, avg(mean_value) from samples
Error report -
ORA-00937: not a single-group group function
00937. 00000 - "not a single-group group function"
*Cause:
*Action:
Есть ли возможность создать представление в базе данных oracle с помощью функции group. Я также пробовал sum() и count(). все они также выдают ошибку.
Комментарии:
1. Пожалуйста, предоставьте примеры данных и желаемых результатов в виде табличного текста, чтобы уточнить ваши требования.
Ответ №1:
Основная причина вашей проблемы: вы пытались выполнить оператор SELECT, который включал функцию GROUP BY (т. Е.: Функция AVG, функция MIN, функция MAX, функция SUM, функция COUNT), но не хватало предложения GROUP BY .Попробуйте добавить предложение Group BY и выполнить запрос.
Ответ №2:
Вы можете попробовать следующее — поскольку avg()
это агрегатная функция, вы не можете добавить ее к другим столбцам без добавления group by the предложение —
create view sample_view as
select A,B,C,D,E, (a b c d e)/5 as Mean_value,
GREATEST(a,b,c,d,e)-LEAST(a,b,c,d,e) as range_value,
avg((a b c d e)/5) over()
from samples;