SQL错误:ORA-00979:不是GROUP BY表达式

时间:2013-09-26 02:22:30

标签: sql oracle

任何人都可以帮我解决这个问题, 我有3个表:客户,产品和产品_订购,我正在努力寻找订购了1个以上产品的客户。这是我的疑问:

SELECT customer_id, product_id
FROM product_ordered
GROUP BY customer_id
HAVING COUNT (customer_id)>1;

我收到此错误: 错误报告: SQL错误:ORA-00979:不是GROUP BY表达式 00979. 00000 - “不是GROUP BY表达式”

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

select customer_id, product_id from product_ordered group by customer_id,product_id having count (customer_id)>1;

答案 1 :(得分:0)

尝试:

SELECT customer_id
FROM product_ordered
GROUP BY customer_id
HAVING COUNT (customer_id)>1;

问题是product_id不属于group by。如果执行分组依据,则只能选择组中的列或使用聚合函数。该查询将返回多次出现的customer_id。我不知道你的表结构,但如果你想要更多的数据,那么只需要让我们知道你正在使用的sql版本,SQL Sever,MYSQL或Oracle,我可以尝试用窗口函数编写一些东西。

答案 2 :(得分:0)

您真的不想选择订购多种产品的客户吗?

多个订单行,或多个产品,或多个独特产品?

如果您作为内嵌查询运行

(select customer_id from product_ordered group by customer_id having count (customer_id) > 1)

您将看到所有放置多个订单行的客户。但是订单中可能有多行,或者一行的多个订单,yada yada ......

尝试使用select customer_id from product_ordered group by customer_id having count(distinct product_id)>1,让实际看到购买了多个独特产品的客户。