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

StackOverflow https://stackoverflow.com/questions/821370

  •  03-07-2019
  •  | 
  •  

我想在我的表格中使用GROUP BY项目,该项目具有相关的货币价值。这个我可以按百分比计算,但是列表中的项目通常太多(太多而无用,例如在图表中)。因此,我想将那些对总数低于5%的贡献的项目放入“其他”组。有什么想法吗?

谢谢(使用MySQL> v5)

有帮助吗?

解决方案

看起来像UNION可以提供帮助,例如(当然,取决于你的桌子的组织方式):

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,但在某些时候,可能值得转换到其他受访者暗示的程序方法。

其他提示

你问了想法。我可以为你编写SQL,但我想(根据你的整体设计)你可能会发现在BL或UI中做一些工作更容易,例如使用数组来完成同样的事情。首先,SQL必然会比您想要的更复杂,效率更低。

创建一个临时表并有两个插入语句,一个主要的东西和一个另一个组,然后只从临时表中选择所有。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top