繁体   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