Использование функции sum в представлении sql в базе данных oracle

#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;