2015-09-29 15 views
0

我這裏有一些代碼,需要包括名稱與組由Oracle SQL

`SELECT a.Officer_ID, Count(Crime_ID) 
FROM Officers a inner Join Crime_Officers b on a.Officer_ID =  b.Officer_ID 
Group by a.Officer_ID 
Having (Count(Crime_ID) > (select avg(distinct(Count(Crime_ID))) 
         From Crime_Officers 
         Group by officer_Id));` 

它輸出這樣,

`OFFICER_ID COUNT(CRIME_ID) 
---------- --------------- 
111115    9 ` 

它很酷,但我的任務只需要最後的人員這個名字在表A中。我用Officer_ID和Count對它進行了嘗試,以確保代碼正常工作。當我嘗試像這樣,

`SELECT Last 
FROM Officers a inner Join Crime_Officers b on a.Officer_ID = b.Officer_ID 
Group by a.Officer_ID 
Having (Count(Crime_ID) > (select avg(distinct(Count(Crime_ID))) 
         From Crime_Officers 
         Group by officer_Id));` 

我得到這個錯誤,

`Error starting at line 1 in command: 
SELECT Last 
FROM Officers a inner Join Crime_Officers b on a.Officer_ID = b.Officer_ID 
Group by a.Officer_ID 
Having (Count(Crime_ID) > (select avg(distinct(Count(Crime_ID))) 
         From Crime_Officers 
         Group by officer_Id)) 
Error at Command Line:1 Column:8 
Error report: 
SQL Error: ORA-00979: not a GROUP BY expression 
00979. 00000 - "not a GROUP BY expression" 
*Cause:  
*Action:` 

誰能幫助或解釋我缺少/做錯了什麼?

回答

0

只有在以下情況下才能選擇一列:a)它在GROUP BY中,b)它是從GROUP BY列派生的,或者c)它是像MAX/MIN這樣的集合函數的結果。

在你的情況下,每個Officer_ID應該只有一個Last的值。

簡單地改變你的GROUP BY閱讀:

GROUP BY a.Officer_ID, a.Last