2015-11-27 120 views
0

我有兩個表,產品(pid,pname,quantityinhand,price,discount) 購買(pid,qty,p_time,total_price)//其中qty是單位數出售。 我需要找到pname,pdate(單位爲yyyy格式),特定月份中每個pid銷售的總數量,一個月內銷售的產品的總價格,平均價格(total_price/quantity)。查詢每月總銷售量 - oracle

查詢我嘗試是如下

select pname, p_time, qty_month, amount_month, avg_sale 
FROM 
    (select p.pname, to_char(q.ptime,'MON yyyy') p_time, 
      sum(qty) as qty_month, sum(total_price) as amount_month, 
      (q.total_price/q.qty) as avg_sale from products p, purchases q 
    where p.pid=q.pid 
    group by pname, ptime) 

我得到這個錯誤 - >(q.total_price/q.qty)從商品P avg_sale,購買q

ERROR第4行:ORA-00979:不是GROUP BY表達式。

我在做什麼錯?

我需要查找每個產品的簡短月度統計數據。

通過添加「爲pname,的ptime,TOTAL_PRICE組,數量」我得到的結果,將張貼這需要的PID參數,並給出了月度銷售統計,包括從產品表PNAME需要過程的另一個問題。

+0

你能PLZ使用提供表結構兩個組的表 –

+0

而不是別名'TO_CHAR(q.ptime,「MON YYYY」)'也因爲你是使用你不能使用的集合函數(q.total_price/q.qty) – PK20

+0

SUM((q.total_price/q.qty)as avg_sale) – Mihai

回答

1

試試這個

SELECT pname, 
     p_time, 
     qty_month, 
     amount_month, 
     (amount_month/qty_month) as avg_sale 
FROM 
    ( 
    SELECT p.pname, 
      to_char(q.ptime,'MON yyyy') p_time, 
      sum(qty) as qty_month, 
      sum(total_price) as amount_month 
    FROM  products p, purchases q 
    WHERE p.pid=q.pid 
    GROUP BY pname, to_char(q.ptime,'MON yyyy') 
) 
+0

感謝好友,現在需要制定一個以pid作爲參數的過程。將嘗試後發佈另一個問題。 –

+0

是啊,歡迎 – PK20

+0

我創建了一個過程,但是當我執行它時沒有錯誤,它給出錯誤,第1行錯誤,沒有找到數據。我有一段時間不能發佈另一個問題,我是否應該在評論中發佈它? –