我目前在Oracle數據庫10g中使用我的數據庫時遇到了GROUP BY語句問題。SQL - Oracle數據庫10g組通過查詢
我該數據庫中有四個表 - 廣告,員工,StaffGrade和StaffOnAd。什麼我想查詢是與對他們的工作超過三名工作人員的廣告,我想列出廣告標題和工作人員誰擁有支付等級的數量大於2
下面是我的嘗試:
SELECT Camp.Title
FROM Campaign Camp
LEFT JOIN WorksOn Wo ON Camp.Title = Wo.Title
LEFT JOIN Staff Stf ON Wo.StaffNo = Stf.StaffNo
LEFT JOIN StaffOnGrade StfOGrde ON Stf.StaffNo = StfOGrde.StaffNo
WHERE StfOGrde.Grade > 2 AND Camp.Title IN (SELECT Camp2.Title FROM Campaign Camp2
LEFT JOIN WorksOn Wo2 ON Camp2.Title = Wo2.Title
WHERE COUNT(Camp2.Title) > 3)
GROUP BY Camp.Title
我上述收到的錯誤是:ORA-00934:組功能在這裏不允許使用
我搜索周圍,基本上是錯誤告訴我,我的分組方式是錯誤的,但我不知道這是爲什麼。此外,我只是想知道是格式化上述代碼的正確方法?
任何幫助表示讚賞。
注:關於表下方
- 廣告只是一些更多的信息主要有關於空氣日期等
- 工作人員記錄了他們的個人資料領域。
- StaffGrade顯示工作人員的付款等級。
- StaffOnAd顯示了工作人員由 標題廣告在什麼廣告作品。
EDIT 1:嘗試了以下注釋後:
SELECT Camp.Title
FROM Campaign Camp
LEFT JOIN WorksOn Wo ON Camp.Title = Wo.Title
LEFT JOIN Staff Stf ON Wo.StaffNo = Stf.StaffNo
LEFT JOIN StaffOnGrade StfOGrde ON Stf.StaffNo = StfOGrde.StaffNo
WHERE StfOGrde.Grade > 2 AND Camp.Title IN (SELECT Camp2.Title FROM Campaign Camp2
LEFT JOIN WorksOn Wo2 ON Camp2.Title = Wo2.Title
HAVING COUNT(Camp2.Title) > 3)
GROUP BY Camp.Title
然而,我收到一個新的錯誤:ORA-00937:不是一個單組基函數
編輯2:
SELECT Camp.Title
FROM Campaign Camp
LEFT JOIN WorksOn Wo ON Camp.Title = Wo.Title
LEFT JOIN Staff Stf ON Wo.StaffNo = Stf.StaffNo
LEFT JOIN StaffOnGrade StfOGrde ON Stf.StaffNo = StfOGrde.StaffNo
WHERE StfOGrde.Grade > 2
AND Camp.Title IN
(SELECT Camp2.Title
FROM Campaign Camp2
LEFT JOIN WorksOn Wo2
ON Camp2.Title = Wo2.Title
GROUP BY Camp2.Title
HAVING COUNT(Camp2.Title) > 3
)
GROUP BY Camp.Title
此修訂查詢中沒有錯誤。但是,顯示的唯一結果是廣告的標題,我還需要在該廣告上工作的員工數量等級支付大於2.我只是假設最後一組通過聲明可以解決此問題,但我不要認爲它是必要的。
我很困惑這一點。我試過了,它返回沒有找到數據。什麼是gradeok,爲什麼在案件陳述後?還有總員工,這將是員工表正確嗎? – George
在內部select中,您有兩個計算列,totalstaff,用於計算與廣告相關的總員工記數,以及gradeok(或任何您想稱之爲唯一的別名),這是案例列的別名並計算有多少員工的付款等級大於2.如果您可以測試它,請嘗試僅運行內部選擇。 – Aitor
我剛剛編輯了查詢以嘗試清除列的含義... – Aitor