Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果分组的项目范围很大,则计数(不同)并按问题分组_Mysql_Count_Group By_Distinct - Fatal编程技术网

Mysql 如果分组的项目范围很大,则计数(不同)并按问题分组

Mysql 如果分组的项目范围很大,则计数(不同)并按问题分组,mysql,count,group-by,distinct,Mysql,Count,Group By,Distinct,我正在合并两个表(发货和退货),并使用group by查看特定条件下的总计。这两个表通过Shipping_id关联。此列基本上是唯一的,但包含一些重复项,因为每个装运可以包含多个表中也包含的项目 我试图统计所有按仓库、卖家和大小分组的不同装运。count(distinct)非常有效,但如果要分组的项目范围很大,则与group by一起使用时不会报告正确的信息 下面的查询返回7批装运(合计)4批退货(也添加)。虽然我有少量的测试数据,但退货计数是正确的,实际上有6批不同的装运,而不是7批。通过此查

我正在合并两个表(发货和退货),并使用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-我怀疑。因为分组,你总是会得到不正确的数据。