SQL查询每月查找总销售额 - oracle

时间:2015-11-27 06:21:11

标签: sql oracle group-by

我有两张桌子,产品(pid,pname,quantityinhand,价格,折扣) 购买(pid,qty,p_time,total_price)//其中,qty是销售单位数。 我需要找到pname,pdate(以y yyyy格式),特定月份每个pid的总销售量,一个月内销售的产品总价,平均价格(total_price / quantity)。

查询我尝试如下

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

  

第4行的错误:ORA-00979:不是GROUP BY表达式。

我做错了什么?

我需要找到每种产品的月度统计数据。

通过pname,ptime,total_price,qty" 添加"分组,我将获得所需的过程的另一个问题,该过程将pid作为参数和给出每月销售统计数据,包括产品表中的pname。

1 个答案:

答案 0 :(得分: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')
  )