如何计算关系数据库中的聚合

时间:2012-07-08 16:46:16

标签: c++

假设我有这样的数据集:

MONTH   REGION  SALES
NOV_2011    North   15000
NOV_2011    North   15000
OCT_2010    West    14000
NOV_2011    North   15000
OCT_2010    West    14000
OCT_2010    West    7000
APR_2010    North   3000
DEC_2011    South   24000
APR_2010    North   9000

我希望按月和地区获得销售额。

MONTH   REGION  SALES
APR_2010    North   12000
DEC_2011    South   24000
NOV_2011    North   45000
OCT_2010    West    35000

如果这个数据在关系表中,我可以轻松编写一个sql来获得答案。所有数据库几乎可以立即给出答案(当然取决于数量,索引等)。 我想使用C ++工具来进行这种计算,因为有时候这个任务不值得添加一个sql库。 是否有数据结构算法可以使这些任务更容易?

1 个答案:

答案 0 :(得分:0)

您可以使用std::map为列中的键构建索引表。

一个问题是您的数据包含重复的行。例如,其中month == NOV_2011和region == North和Sales == 15000.这使得使用std::map不切实际,因为您必须将Value作为列表或其他容器(一个关键项,a每个键条目的行索引容器。)

大多数数据库设计人员通过重新设计表中的数据来加快访问速度。搜索“关系数据库规范化”。