![](/img/trans.png)
[英]Any way to group the result of a DISTINCT and get the COUNT of the rows grouped correctly?
[英]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.