2017-02-22 5 views
-3

У меня есть таблица с именем politics так:Oracle SQL ошибка: ORA-00979: не GROUP BY выражения

Я хочу группе WASDEPENDENT. Но когда я побежал

select * from politics group by WASDEPENDENT 

он поднял ошибку:

ORA-00979: not a GROUP BY expression 
00979. 00000 - "not a GROUP BY expression" 
*Cause:  
*Action: 
Error at Line: 15 Column: 8 

Как я могу решить эту проблему?

+0

Общее GROUP BY правило говорит: Если указано предложение GROUP BY, каждая ссылка столбца в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции set! – jarlh

+1

SELECT должен содержать столбцы, которые указаны в GROUP BY или столбцы с их агрегатной функцией. –

+0

Вам нужно решить, как выбрать только одно значение из каждого столбца, когда значение WASDEPENDENT имеет несколько строк. – jarlh

ответ

1

GROUP BY необходим для агрегации функций, таких как SUM() или COUNT(). Таким образом, такой запрос, как select * from politics group by WASDEPENDENT, не имеет смысла.

Вот пример правильного использования. Этот запрос подсчитывает, сколько записей попадают в каждое значение WASDEPENDENT:

select WASDEPENDENT, count(*) 
from politics 
group by WASDEPENDENT 
order by WASDEPENDENT 
+0

Это сработало. благодаря –

0

Причина

Вы пытались выполнить SELECT, заявление, которое включало GROUP BY функции (например: MIN Функцию, MAX Функция , Функция SUM, функция COUNT) и выражение в списке SELECT, которое не было в предложении GROUP BY.

Разрешение

Опция (s), чтобы устранить эту ошибку Oracle являются:

Вариант № 1

Перепишите ЗЕЬЕСТ так, что столбец или выражение, перечисленные в списке выбора также найдены в предложении GROUP BY.

Вариант № 2

Удалить GROUP BY функции (например: MIN Функция, MAX Функция, SUM Функция, COUNT Функция) из ЗЕЬЕСТА.

Вариант № 3

Удалите выражение из списка SELECT, который не был в GROUP BY предложения.

Например, если бы вы попытались выполнить следующую ЗЕЬЕСТ:

SELECT department, company, MIN(salary) AS "Lowest salary" 
FROM employees 
GROUP BY department; 

Вы можете исправить это, включая компанию в предложения GROUP BY следующим образом:

SELECT department, company, MIN(salary) AS "Lowest salary" 
FROM employees 
GROUP BY department, company;