在SQL查询中使用计数,求和和分组

汤姆

我正在尝试编写一个查询,以显示订单数和每个客户在这些订单中购买的商品数

SELECT customers.customer_id, COUNT(orders.order_id),  
SUM(order_details.order_qty)
FROM customers
LEFT OUTER JOIN orders 
ON orders.customer_id=customers.customer_id
LEFT OUTER JOIN order_details 
ON order_details.order_id=orders.order_id
GROUP BY customers.customer_id;

我要连接三个表,正如您到目前为止所看到的那样...问题是我的查询结果错误

在此处输入图片说明

customer_id:1应该有3个订单,n个订单中的商品数量应该是5

这是下面的另一幅图像,以显示其他表包含的内容:

我正在使用Oracle Database 12.2.0.1.0版

订单详细信息: 在此处输入图片说明

订单: 在此处输入图片说明

顾客: 在此处输入图片说明

装甲运兵车

问题是我的查询结果是错误的

猜测您的订单有多个详细记录。因此,只要像这样加入他们,就会根据详细信息记录的数量生成一个产品。

您可以做的是使用内联视图汇总qty每个订单ID;

SELECT customers.customer_id
       , COUNT(orders.order_id)
       , SUM(order_details.tot_qty)
FROM customers
LEFT OUTER JOIN orders 
ON orders.customer_id=customers.customer_id
LEFT OUTER JOIN (select order_id, SUM(order_qty) as tot_qty 
                 from order_details 
                 group by order_id) order_details
ON order_details.order_id=orders.order_id
GROUP BY customers.customer_id;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章