我正在嘗試爲一個任務編寫幾個Oracle SQL腳本。除了一部分,我已經設法使其全部起作用。總而言之,如果表A中1列的平均值大於表B中另一列的平均值,我必須顯示2個表中的數據。我知道你不能將AVG函數包含在WHERE子句或HAVING子句中,因爲它似乎不能正確訪問數據(從我讀過的)。當我排除這個條款時,腳本正確執行,所以我相信沒有其他錯誤。Oracle SQL - 在哪裏比較AVG函數
我試着寫下如下,但我得到的錯誤是ORA-00936:缺少表達式,它只是>符號前。我認爲這可能是由於不恰當的支架放置,但我的企圖沒有解決這個問題。這裏是我的嘗試:
SELECT l.l_category, SUM(r.r_sold), AVG(l.l_cost)
FROM promos l
INNER JOIN sales r
ON r.promo_id = l.promo_id
GROUP BY l.l_category
HAVING (SELECT AVG(l.l_cost) OVER (PARTITION BY l.l_cost)) >
(SELECT AVG(r.r_sold) OVER (PARTITION BY r.r_sold));
我試着這樣做沒有OVER(PARTITION BY ...),以及把它變成一個WHERE子句,但它並沒有解決錯誤。我很確定我需要把它放到一個SELECT語句中,但我不知所措。
只需使用'HAVING AVG(l.l_cost)> AVG(r.r_sold)' – cha
@cha謝謝!你的建議非常完美!我想我過於複雜的情況。 –
你可以使用'WHERE(Select ...)>'但你必須使用正確的語句,然後像'WHERE(select * from dual)> ...' – Armunin