按“其他”分组,其中贡献较小的组包含在“其他”字段中-MySQL

按“其他”分组,其中贡献较小的组包含在“其他”字段中-MySQL,mysql,group-by,having,Mysql,Group By,Having,我想根据表中的一个项目进行分组,该项目具有相关的货币值。我可以计算出这个百分比,但是列表中的项目太多,太多而没有用处,例如在图表中。因此,我想把那些占总数不到5%的项目归入“其他”组。有什么想法吗 感谢您使用MySQL>v5征求您的意见。我可以为您编写SQL,但我想知道,基于您的总体设计,您可能不会发现在BL或UI中做更多的工作更容易,例如使用数组来完成相同的任务。首先,SQL必然会比您希望的更复杂、效率更低。您询问了一些想法。我可以为您编写SQL,但我想知道,基于您的总体设计,您可能不会发现在

我想根据表中的一个项目进行分组,该项目具有相关的货币值。我可以计算出这个百分比,但是列表中的项目太多,太多而没有用处,例如在图表中。因此,我想把那些占总数不到5%的项目归入“其他”组。有什么想法吗


感谢您使用MySQL>v5

征求您的意见。我可以为您编写SQL,但我想知道,基于您的总体设计,您可能不会发现在BL或UI中做更多的工作更容易,例如使用数组来完成相同的任务。首先,SQL必然会比您希望的更复杂、效率更低。

您询问了一些想法。我可以为您编写SQL,但我想知道,基于您的总体设计,您可能不会发现在BL或UI中做更多的工作更容易,例如使用数组来完成相同的任务。首先,SQL必然会比您想要的更复杂、效率更低。

创建一个临时表,并有两个insert语句,一个是您的主要内容,另一个是组,然后从临时表中选择all。

创建一个临时表,并有两个insert语句,您的一个主要材料和另一个组中的一个材料,然后从临时表中选择“全部”。

看起来联合可能会有所帮助,例如,根据您的表的组织方式,当然:

SELECT itemname, SUM(percent) AS pc FROM items
GROUP BY itemtype
HAVING SUM(percent) >= 0.05
UNION
SELECT 'Other', SUM(*) FROM
  (SELECT SUM(percent) FROM items
   GROUP BY itemtype
   HAVING SUM(percent) < 0.05)

如果您没有“百分比”字段,而只说“值”字段,那么需要动态计算百分比,将其作为项目值与总计分数的100倍,您可以从另一个嵌套选择中获得总计,但在某种程度上,正如其他受访者所暗示的那样,可能值得转向程序性方法。

看起来工会可能会有所帮助,例如,当然,取决于您的表格的组织方式:

SELECT itemname, SUM(percent) AS pc FROM items
GROUP BY itemtype
HAVING SUM(percent) >= 0.05
UNION
SELECT 'Other', SUM(*) FROM
  (SELECT SUM(percent) FROM items
   GROUP BY itemtype
   HAVING SUM(percent) < 0.05)
如果没有“百分比”字段,而只说“值”字段,则需要动态计算百分比,将其作为项目值与总计分数的100倍,您可以从另一个嵌套选择中获得总计,但在某些情况下,可能值得切换到其他响应者提示的过程方法