1

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

谢谢(使用 MySQL > v5)

4

3 回答 3

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

于 2009-05-04T19:59:42.497 回答
0

你征求意见。我可以为您编写 SQL,但我想知道(基于您的整体设计)您可能不会发现在 BL 或 UI 中做更多的工作(例如使用数组)来完成同样的事情并不容易。一方面,SQL 必然比您想的更复杂且效率更低。

于 2009-05-04T18:52:41.237 回答
0

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

于 2009-05-04T18:59:58.833 回答