任何人都可以帮我解决这个问题, 我有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表达式”
感谢您的帮助
答案 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
,让实际看到购买了多个独特产品的客户。