2012-07-08 36 views
1

说我有一个数据集是这样的:如何计算样聚集在关系数据库中

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

看看'map' http://www.cplusplus.com/reference/stl/map/。您可以将“月份和地区”存储为密钥,将“销售”存储为值。你将不得不解析所有的数据并将其添加到'map'中。 – twain249 2012-07-08 17:07:30

+0

@ twain249这就是我通常在这种情况下所做的事情,但想想你有15列或更多列的情况吗?密钥可能变得相当庞大 – user841550 2012-07-08 18:19:09

+0

您应该根据数据库规则重新组织数据,以便表中的重复项最少。 – 2012-07-08 19:47:36

回答

0

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

一个问题是您的数据包含重复的行。例如,月== NOV_2011和地区==北和销售== 15000.这使得使用std::map不切实际,因为您必须将值作为列表或其他容器(一个关键项目,一个行索引的容器为每个键入口)。

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

+0

是的,我的例子中的“表”没有被标准化。但是任何关系数据库都不难解决我的查询问题,例如“选择月份,地区,总和(销售额)作为从T组逐月销售,区域' – user841550 2012-07-08 20:16:28