gpt4 book ai didi

MYSQL Count group by rows 忽略 JOIN 和 SUM 字段对 Joined 表的影响

转载 作者:行者123 更新时间:2023-11-29 07:06:05 26 4
gpt4 key购买 nike

我有 3 个表:

Orders
- id
- customer_id

Details
- id
- order_id
- product_id
- ordered_qty

Parcels
- id
- detail_id
- batch_code
- picked_qty

订单有多个详细信息行,每个产品一个详细信息行。

一个明细行有多个包裹,因为10'000个订单数量可能来自6个不同的批处理,所以批处理的 cargo 是分开包装和发货的。放入每个包裹的详细信息行中的拣选数量应与订购数量相同。

...希望这是有道理的。

我正在努力编写一个查询来提供所有这些的摘要信息。

我需要按 customer_id 分组,为每个客户提供一行数据。

那一行应该包含

  • 他们的订单总数
  • 他们在所有订单中订购的总商品数量
  • 他们在所有订单中总 picked_qty 商品

我可以获得第一个:

SELECT customer_id, COUNT(*) as number_of_orders 
FROM Orders
GROUP BY Orders.customer_id

但是当我 LEFT JOIN 其他两个表并添加

SELECT ..... SUM(Details.ordered_qty) AS total_qty_ordered, 
SUM(Parcels.picked_qty) AS total_qty_picked

.. 然后我得到的结果似乎不符合数量,并且 COUNT(*) 似乎包括来自 JOIN 的额外行,这显然不再给我订单数量。

不确定接下来要尝试什么。=====编辑=======

这是我试过的查询:

SELECT 
customer_id,
COUNT(*) as number_of_orders,
SUM(Details.ordered_qty) AS total_qty_ordered,
SUM(Parcels.picked_qty) AS total_qty_picked
FROM Orders
LEFT JOIN Details ON Details.order_id=Order.id
LEFT JOIN Parcels ON Parcels.detail_id=Detail.id
GROUP BY Orders.customer_id

最佳答案

尝试将 COUNT(distinct Orders.order_id) 作为 number_of_orders,

SELECT 
customer_id,
COUNT(distinct Orders.order_id) as number_of_orders,
SUM(Details.ordered_qty) AS total_qty_ordered,
(select SUM(Parcels.picked_qty)
FROM Parcels WHERE Parcels.detail_id=Detail.id ) AS total_qty_picked
FROM Orders
LEFT JOIN Details ON Details.order_id=Order.id
GROUP BY Orders.customer_id

编辑:添加了另一个带有子选择的选择

关于MYSQL Count group by rows 忽略 JOIN 和 SUM 字段对 Joined 表的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7192421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com