【发布时间】:2016-03-01 07:10:47
【问题描述】:
我有两张表,products(pid, pname, quantityinhand, price, discount) purchase(pid, qty, p_time, total_price) // 其中 qty 是售出的单位数。 我需要找到 pname、pdate(以 mon 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) as avg_sale from products p, purchase q
第 4 行出现错误:ORA-00979:不是 GROUP BY 表达式。
我做错了什么?
简而言之,我需要找到每种产品的每月统计数据。
通过添加 "group by pname, ptime, total_price, qty" 我得到了结果,将发布另一个问题,要求程序以 pid 作为参数并给出包括 pname 在内的每月销售统计信息从产品表。
【问题讨论】:
-
能否请您提供两个表的表结构
-
使用
to_char(q.ptime,'MON yyyy')而不是组中的别名,因为您使用的聚合函数不能与它一起使用(q.total_price/q.qty) -
SUM((q.total_price/q.qty) as avg_sale)
-
@PK20 谢谢伙计,我按 pname、ptime、total_price、qty 添加了组,现在需要以存储过程的形式找到相同的结果,以 pid 作为参数并给出每月的统计信息特定产品