Mysql 如果分组的项目范围很大,则计数(不同)并按问题分组
我正在合并两个表(发货和退货),并使用group by查看特定条件下的总计。这两个表通过Shipping_id关联。此列基本上是唯一的,但包含一些重复项,因为每个装运可以包含多个表中也包含的项目 我试图统计所有按仓库、卖家和大小分组的不同装运。count(distinct)非常有效,但如果要分组的项目范围很大,则与group by一起使用时不会报告正确的信息 下面的查询返回7批装运(合计)4批退货(也添加)。虽然我有少量的测试数据,但退货计数是正确的,实际上有6批不同的装运,而不是7批。通过此查询,我基本上查看所有装运,并在装运中的某个项目已退货时加入退货信息Mysql 如果分组的项目范围很大,则计数(不同)并按问题分组,mysql,count,group-by,distinct,Mysql,Count,Group By,Distinct,我正在合并两个表(发货和退货),并使用group by查看特定条件下的总计。这两个表通过Shipping_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时发现了一个潜在的问题。如果一次装运有多个项目,并且可能会出现重复的装运记录,这意味着可能是因为来自不同的仓库或卖家,或者大小不同。通过按这些字段分组,您有可能以多次计算装运结束,因为该组的
装运\u id
在技术上是不同的
您可以尝试按
s.shipping\u id
分组,而不是按s.warehouse,s.seller,s.size
分组。这里的问题是,如果仓库、卖家或大小不同,您将丢失一行(对于该仓库/卖家/大小)但是总数会加起来。谢谢您的回复。您的解释很有意义。按装运编号分组将提供正确的计数,但当每批装运有多个项目时,将过滤掉项目信息。此外,他们的独立装运超过100万次,这对我的出口来说太大了。有什么方法可以做到我想做的吗试图使用给定的数据进行测试?@JoshG-我怀疑。因为分组,你总是会得到不正确的数据。