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

时间:2009-05-04 18:49:49

标签: mysql group-by having

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

谢谢(使用MySQL> v5)

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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