首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Group By“和其他数据库算法?

问"Group By“和其他数据库算法?
EN

Stack Overflow用户
提问于 2009-07-15 03:39:04
回答 3查看 2.2K关注 0票数 6

我已经编写了一些非常基本的工具,用于分组、旋转、合并和小计来自非DB源的数据集(例如: CSV、OLTP系统)。"group by“方法是其中大多数方法的核心。

然而,我相信在制定有效的数据分组算法方面已经做了很多工作……我确定我没在用它们。我的Google-fu完全没有找到任何东西。

是否有好的在线资源或书籍描述了创建分组数据的更好方法?

或者我应该开始看看MySQL源代码或者其他类似的东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-15 03:53:29

"group by“某些字段(或一组字段和表达式,但为了简单起见,我将使用" field”!-)的一种非常方便的方法是,当您可以安排以排序方式遍历分组( RBG )之前的结果时--实际上您并不关心排序(除了常见的情况,ORDER BY也在那里,并且恰好与GROUP BY在同一个字段上!-),而是关心排序的“副作用”属性-- RBG中具有相同分组字段值的所有行都会紧跟在一起,因此,您可以进行累加,直到分组字段发生变化,然后发出/产生到目前为止累积的结果,然后使用新行(具有不同分组字段值的行)重新初始化累加器--确保在开始时“只初始化累加器”,当然,在最后“只发出/产生累积的结果”。

如果这不起作用,也许您可以对分组字段进行散列,并为该组累积的结果使用哈希表--在RBG中的每一行,对分组字段进行散列,检查它是否已经作为哈希表中的关键字存在,如果没有,则使用从RBG行适当初始化的累加器将其放在那里,否则更新每个RBG行的累加器。你只是在最后放出所有的东西。当然,问题是在结束之前占用了更多的内存!-)

这是两种基本的方法。BTW,你想为每一个都编写伪代码吗?

票数 5
EN

Stack Overflow用户

发布于 2009-07-15 03:57:58

您应该检出OLAP数据库。OLAP允许您创建一个聚合数据库,以便以“切片和骰子”的方式进行分析。

可以使用OLAP数据库按任意数量的维度快速分析聚合度量,如计数、平均值、最小值、最大值、总和和stdev。

请参阅this introduction to OLAP on MSDN。

票数 1
EN

Stack Overflow用户

发布于 2009-07-16 05:13:37

给出一个示例CSV文件和所需的结果类型,我也许可以用Python为您快速找到一个解决方案。

Python具有CSV模块和列表/生成器理解,可以帮助完成这类工作。

  • Paddy.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1129276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档