簡體   English   中英

如果要分組的項目范圍很大,則按問題進行區分(區分)和分組

[英]Count(distinct) and group by issue if the range of items being grouped is significant

我將加入兩個表(裝運和退貨),並使用分組依據查看某些條件的總計。 這兩個表通過shipment_id相關聯。 該列通常是唯一的,但包含一些重復項,因為每個貨件可以包含表中也包含的多個項目。

我試圖計算按倉庫,賣方和大小分組的所有不同發貨。 count(distinct效果很好,但是如果與group by一起使用,如果要分組的項目范圍很大,則不會報告正確的信息。

下面的查詢返回7個裝運(總計)4個返回(也添加)。 盡管測試數據量少,但我的退貨計數是正確的,但實際上有6個不同的貨件,而不是7。使用此查詢,我基本上是查看所有貨件,如果貨品中有貨,則加入退貨信息回來。

select s.warehouse, s.seller, s.size,
count(distinct s.shipment_id) as total_shipments,
count(distinct r.shipment_id) as total_returns
from shipments s
left join returns r
on s.shipment_id = r.shipment_id
group by s.warehouse, s.seller, s.size

我擔心我生成的報告並不完全准確。 有沒有解決此問題的方法? 我見過類似的問題,但沒有一個真正適用。 我正在使用MYSQL

我看到一個潛在的問題。 如果一個貨件有多個項目,並且可能會出現重復的貨件記錄,則意味着該貨件可能來自不同的倉庫或賣方,或者大小可能不同。 通過按這些字段進行分組,您可能會面臨最終計算出的貨運量要多於一次的風險,因為該組的shipment_id在技​​術上是不同的。

您可以嘗試按s.shipment_id而不是s.warehouse, s.seller, s.size 這里的問題是,如果倉庫,賣方或大小不同,您最終將丟失一行(對於該倉庫/銷售/大小),但總數將加起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM