我有两张桌子:
和
我想要低于预期的输出:
我尝试了以下查询:
SELECT con.container_id, count( si.item_id) as shipment_item_count,
count(distinct si.shipment_order_id) as shipment_order_count,
count(si.shipment_order_id) as total_number_of_shipment_item --- Here how to show total number of shipment_item
from shipment_item_container con
left join shipment_item si on si.item_id = con.shipment_item
group by con.container_id;
但它显示如下输出:
答案 0 :(得分:1)
首先在 Shipment_item_container
内聚合,然后将结果加入 Shipment_item
和 aggrgate 的 2 个副本:
SELECT sic.Container_id, sic.Shipment_item_count,
COUNT(DISTINCT si.Shipment_order_id) Shipment_order_ciount,
COUNT(si.Shipment_order_id) Total_number_of_shipment_item
FROM (
SELECT Container_id, Shipment_item, COUNT(*) Shipment_item_count
FROM Shipment_item_container
GROUP BY Container_id, Shipment_item
) sic
LEFT JOIN Shipment_item si ON si.Item_id = sic.Shipment_item
LEFT JOIN Shipment_item t ON t.Shipment_order_id = si.Shipment_order_id
GROUP BY sic.Container_id, sic.Shipment_item_count
参见demo。
结果:
> container_id | shipment_item_count | shipment_order_ciount | total_number_of_shipment_item
> :----------- | ------------------: | --------------------: | ----------------------------:
> A | 2 | 1 | 4
> B | 1 | 0 | 0