2017-02-22 56 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

原因

試圖執行,其中包括一個GROUP BY功能的SELECT語句(即:MIN功能,MAX功能,SUM函數,COUNT函數)以及SELECT列表中不在GROUP BY子句中的表達式。

分辨率

的解決這個Oracle錯誤選項(S)是:

選項#1

重寫SELECT語句,以便在SELECT列表中的列或表達式還發現在GROUP BY子句中。

選項#2

取出GROUP BY功能(即:MIN功能,MAX功能,SUM函數,COUNT函數)SELECT語句。

選項#3

取下SELECT列表中是不是在GROUP BY子句中的表達。

例如,如果您曾試圖執行下面的SELECT語句:

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;