CN103838574A - 一种对数据表进行分组汇总的通用方法 - Google Patents
一种对数据表进行分组汇总的通用方法 Download PDFInfo
- Publication number
- CN103838574A CN103838574A CN201410057584.6A CN201410057584A CN103838574A CN 103838574 A CN103838574 A CN 103838574A CN 201410057584 A CN201410057584 A CN 201410057584A CN 103838574 A CN103838574 A CN 103838574A
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- gather
- groups
- divided
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种对数据表进行分组汇总的通用方法,包括如下步骤:S10:提供按条件合并数据表的功能函数;S11:提供对数据表进行分组汇总的功能函数;S12:提供过滤数据表中的重复行的功能函数;S13:将上述函数封装成一组函数。本发明对DataTable的处理封装成一组函数,对外只提供一个简单的函数接口,当需要执行同样的操作时,直接调用即可,方便开发人员进行数据表分组汇总处理,提高处理效率,不需要再额外编写处理逻辑。
Description
技术领域
本发明属于计算机开发技术领域,涉及一种对数据表进行分组汇总的通用方法。
背景技术
在计算机开发过程中,软件开发人员经常需要对DataTable(数据表)执行按条件合并、分组汇总、过滤重复行等操作。
但是,DataTable本身并不具备按条件合并、分组汇总、过滤重复行等操作的功能。对DataTable执行按条件合并、分组汇总、过滤重复行等操作需要再额外编写处理逻辑,分别提供按条件合并、分组汇总、过滤重复行单独的函数,调用单独的按条件合并、分组汇总、过滤重复行以进行操作。从而导致处理过程复杂、繁琐且效率低下。
故,针对上述现有技术存在的缺陷,实有必要进行开发研究,以提供一种方案,不需要再额外编写处理逻辑,方便开发人员进行数据表分组汇总处理,提高处理效率。
发明内容
为解决上述问题,本发明的目的在于提供一种对数据表进行分组汇总的通用方法,以方便开发人员进行数据表分组汇总处理,提高处理效率,不需要再额外编写处理逻辑。
为实现上述目的,本发明的技术方案为:
一种对数据表进行分组汇总的通用方法,包括如下步骤:
S10:提供按条件合并数据表的功能函数;
S11:提供对数据表进行分组汇总的功能函数;
S12:提供过滤数据表中的重复行的功能函数;
S13:将上述函数封装成一组函数。
进一步地,步骤S10中,按条件合并数据表的主要步骤如下:
S100:接收两个结构相同的数据表,以及过滤条件;
S101:将两个数据表中满足条件的数据进行合并。
进一步地,骤S11中,对数据表进行分组汇总的步骤如下:
S110:接收数据表,以及过滤条件及汇总类型;
S111:按照过滤条件对数据表进行过滤;
S112:遍历数据表中所有的数据行,根据汇总类型对相同的数据进行分组汇总。
进一步地,骤S12中,过滤数据表中的重复行主要包括如下步骤:
S120:接收数据表,以及字段集合;
S121:按照字段集合,将重复的数据过滤掉,形成新的数据表。
相较于现有技术,本发明一种对数据表进行分组汇总的通用方法对DataTable的处理封装成一组函数,对外只提供一个简单的函数接口,当需要执行同样的操作时,直接调用即可,方便开发人员进行数据表分组汇总处理,提高处理效率,不需要再额外编写处理逻辑。
附图说明
图1是本发明的流程图示。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一种对数据表进行分组汇总的通用方法把对DataTable的处理封装成一组函数,对外只提供一个简单的函数接口,当需要执行同样的操作时,直接调用即可。
如图1所示,本发明一种对数据表进行分组汇总的通用方法,包括如下步骤:
S10:提供按条件合并数据表的功能函数;
S11:提供对数据表进行分组汇总的功能函数;
S12:提供过滤数据表中的重复行的功能函数;
S13:将上述函数封装成一组函数。
其中 ,所述按条件合并数据表的主要步骤如下:
S100:接收两个结构相同的数据表,以及过滤条件;
S101:将两个数据表中满足条件的数据进行合并。
在本发明实施例中,所述按条件合并数据表的功能函数如下:
DataRow[] rows = srcTable.Select(rowFilter);
foreach (DataRow row in rows)
{
destRow = destTable.NewRow();
foreach (FieldInfo field in m_FieldInfo)
{
if (field.RelationName == null)
{
destRow[field.FieldName] = row[field.FieldName];
}
else
{
DataRow parentRow = srcRow . GetParentRow (field. Relation Name);
destRow[field.FieldName] = parentRow[field.FieldName];
}
}
destTable.Rows.Add(destRow);
}
其中,所述对数据表进行分组汇总步骤如下:
S110:接收数据表,以及过滤条件及汇总类型;
S111:按照过滤条件对数据表进行过滤;
S112:遍历数据表中所有的数据行,根据汇总类型对相同的数据进行分组汇总。
在本发明实施例中,所述对数据表进行分组汇总的功能函数如下:
DataRow[] rows = srcTable.Select(rowFilter, groupBy);
DataRow lastRow = null,
destRow = null;
foreach (DataRow srcRow in rows)
{
sameRow = false;
if (lastRow != null)
{
sameRow = true;
foreach (FieldInfo field in m_FieldInfo)
{
if (!ColumnEqual(lastRow[field.FieldName], srcRow [field. Field Name]))
{
sameRow = false;
break;
}
}
if (!sameRow)
{
destTable.Rows.Add(destRow);
}
}
if (!sameRow)
{
destRow = destTable.NewRow();
rowCount = 0;
}
rowCount += 1;
foreach (FieldInfo field in GroupByFieldInfo)
{
switch (field.Aggregate.ToLower())
{
case "last":
destRow[field.FieldAlias] = srcRow[field.FieldName];
break;
case "first":
if (rowCount == 1)
{
destRow[field.FieldAlias] = srcRow[field.FieldName];
}
break;
case "count":
destRow[field.FieldAlias] = rowCount;
break;
case "sum":
destRow[field.FieldAlias] = Add(destRow[field.FieldAlias], srcRow[field.FieldName]);
break;
case "max":
destRow[field.FieldAlias] = Max(destRow[field.FieldAlias], srcRow[field.FieldName]);
break;
case "min":
if (rowCount == 1)
{
destRow[field.FieldAlias] = srcRow[field.FieldName];
}
else
{
destRow[field.FieldAlias] = Min(destRow[field.FieldAlias], srcRow[field.FieldName]);
}
break;
}
}
lastRow = srcRow;
其中,所述过滤数据表中的重复行主要包括如下步骤:
S120:接收数据表,以及字段集合;
S121:按照字段集合,将重复的数据过滤掉,形成新的数据表。
在本发明实施例中,所述过滤数据表中的重复行的功能函数如下:
DataTable dt = new DataTable(tableName);
object[] values = new object[fieldNames.Length];
string fields = "";
for (int i = 0; i < fieldNames.Length; i++)
{
dt.Columns.Add(fieldNames[i], sourceTable.Columns[fieldNames[i]].DataType);
fields += fieldNames[i] + ",";
}
fields = fields.Remove(fields.Length - 1, 1);
foreach (DataRow dr in sourceTable.Select("", fields))
{
if (lastRow == null || !(RowEqual(lastRow, dr, dt.Columns)))
{
lastRow = dr;
for (int i = 0; i < fieldNames.Length; i++)
{
values[i] = dr[fieldNames[i]];
}
dt.Rows.Add(values);
}
}
本发明实施例中,对数据表进行按条件合并,将结构相同的两个数据表按照条件过滤之后进行合并;对数据表进行分组汇总,按照过滤条件及统计类型进行数据汇总;按照指定字段过滤数据表中的数据行。其中,进行合并的两个数据表结构相同,并可设置过滤条件;并可通过指定统计类型,如求和、求平均值等,来汇总数据;可设置一个或一组字段,在数据表中过滤掉相同的数据行。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种对数据表进行分组汇总的通用方法,其特征在于,包括如下步骤:
S10:提供按条件合并数据表的功能函数;
S11:提供对数据表进行分组汇总的功能函数;
S12:提供过滤数据表中的重复行的功能函数;
S13:将上述函数封装成一组函数。
2.根据权利要求1所述对数据表进行分组汇总的通用方法,其特征在于,步骤S10中,按条件合并数据表的主要步骤如下:
S100: 接收两个结构相同的数据表,以及过滤条件;
S101:将两个数据表中满足条件的数据进行合并。
3.根据权利要求2所述对数据表进行分组汇总的通用方法,其特征在于,骤S11中,对数据表进行分组汇总的步骤如下:
S110:接收数据表,以及过滤条件及汇总类型;
S111:按照过滤条件对数据表进行过滤;
S112:遍历数据表中所有的数据行,根据汇总类型对相同的数据进行分组汇总。
4.根据权利要求3所述对数据表进行分组汇总的通用方法,其特征在于,骤S12中,过滤数据表中的重复行主要包括如下步骤:
S120:接收数据表,以及字段集合;
S121:按照字段集合,将重复的数据过滤掉,形成新的数据表。
5.根据权利要求1所述对数据表进行分组汇总的通用方法,其特征在于:将结构相同的两个数据表按照条件过滤之后进行合并;按照过滤条件及统计类型进行数据汇总;按照指定字段过滤数据表中的数据行。
6.根据权利要求5所述对数据表进行分组汇总的通用方法,其特征在于:进行合并的两个数据表结构相同,并可设置过滤条件;并可通过指定统计类型来汇总数据;其中,设置一个或一组字段,在数据表中过滤掉相同的数据行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410057584.6A CN103838574A (zh) | 2014-02-20 | 2014-02-20 | 一种对数据表进行分组汇总的通用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410057584.6A CN103838574A (zh) | 2014-02-20 | 2014-02-20 | 一种对数据表进行分组汇总的通用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103838574A true CN103838574A (zh) | 2014-06-04 |
Family
ID=50802110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410057584.6A Pending CN103838574A (zh) | 2014-02-20 | 2014-02-20 | 一种对数据表进行分组汇总的通用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103838574A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391158A (zh) * | 2017-08-02 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种基于iDataTable封装实现表格绘制的方法及设备 |
CN109460412A (zh) * | 2018-11-14 | 2019-03-12 | 北京锐安科技有限公司 | 数据聚合方法、装置、设备及存储介质 |
WO2023051832A1 (zh) * | 2021-09-28 | 2023-04-06 | 山东程序元软件有限公司 | 构造组合函数块的方法及装置、组合函数块、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256650A (zh) * | 2008-03-21 | 2008-09-03 | 中国科学院软件研究所 | 一种基于业务实体的企业数据提取方法与*** |
CN101799807A (zh) * | 2009-02-10 | 2010-08-11 | ***通信集团公司 | 一种异构数据表的合并方法及其*** |
CN102110111A (zh) * | 2009-12-29 | 2011-06-29 | 北京大学 | 数据库操作命令的处理方法及装置 |
CN102346774A (zh) * | 2011-09-26 | 2012-02-08 | 深圳市信游天下网络科技有限公司 | 一种数据库操作方法及装置 |
CN103246743A (zh) * | 2013-05-21 | 2013-08-14 | 浪潮集团山东通用软件有限公司 | 一种利用编写实体类特性实现简单数据库的方法 |
-
2014
- 2014-02-20 CN CN201410057584.6A patent/CN103838574A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256650A (zh) * | 2008-03-21 | 2008-09-03 | 中国科学院软件研究所 | 一种基于业务实体的企业数据提取方法与*** |
CN101799807A (zh) * | 2009-02-10 | 2010-08-11 | ***通信集团公司 | 一种异构数据表的合并方法及其*** |
CN102110111A (zh) * | 2009-12-29 | 2011-06-29 | 北京大学 | 数据库操作命令的处理方法及装置 |
CN102346774A (zh) * | 2011-09-26 | 2012-02-08 | 深圳市信游天下网络科技有限公司 | 一种数据库操作方法及装置 |
CN103246743A (zh) * | 2013-05-21 | 2013-08-14 | 浪潮集团山东通用软件有限公司 | 一种利用编写实体类特性实现简单数据库的方法 |
Non-Patent Citations (3)
Title |
---|
吕玉桂: "《SQL Server2008数据库开发经典案例教程》", 31 October 2013, 中国水利水电出版社 * |
程万里等: "《计算机文化基础》", 31 August 2006, 中国铁道出版社 * |
闫英琪: "《Visual FoxPro 6.0数据库应用》", 31 March 2013, 西北工业大学出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391158A (zh) * | 2017-08-02 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种基于iDataTable封装实现表格绘制的方法及设备 |
CN109460412A (zh) * | 2018-11-14 | 2019-03-12 | 北京锐安科技有限公司 | 数据聚合方法、装置、设备及存储介质 |
WO2023051832A1 (zh) * | 2021-09-28 | 2023-04-06 | 山东程序元软件有限公司 | 构造组合函数块的方法及装置、组合函数块、存储介质 |
GB2625954A (en) * | 2021-09-28 | 2024-07-03 | Element Software Co Ltd | Method and apparatus for constructing composite function block, composite function block, and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021164253A1 (zh) | 用户行为实时多维度分析方法、装置及存储介质 | |
CN102915344B (zh) | 一种sql语句处理方法及装置 | |
CN104750620B (zh) | 一种内存迁移方法及装置 | |
CN104462121A (zh) | 数据处理方法、装置及*** | |
CN109299164A (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
CN101651576A (zh) | 告警信息处理方法和*** | |
CN104317970A (zh) | 一种基于数据加工中心的数据流式处理方法 | |
CN106569898A (zh) | 一种资源分配的方法以及移动终端 | |
CN107729063A (zh) | 软件开发工具包的调用方法、装置及终端 | |
CN104462542B (zh) | 基于Android的应用软件图标的分类方法及*** | |
CN103838574A (zh) | 一种对数据表进行分组汇总的通用方法 | |
CN103336684B (zh) | 一种并发处理ap消息的ac及其处理方法 | |
CN104461737A (zh) | 一种内存管理方法和装置 | |
CN101556586A (zh) | 一种自动采集数据的方法、***和装置 | |
WO2016119389A1 (zh) | 一种***对接的管理方法、装置和*** | |
CN104143122A (zh) | 一种智能业务审批方案 | |
CN105611079A (zh) | 一种快速充电方法及其*** | |
CN103905310B (zh) | 报文处理的方法及转发设备 | |
CN109739872A (zh) | 一种sql语句处理的实现方法、***及操作方法 | |
CN109144666A (zh) | 一种跨云平台的资源处理方法及*** | |
CN107479870A (zh) | 一种第三方类库调用方法、装置、移动终端及存储介质 | |
CN104965737B (zh) | 更新数据的获取方法及装置 | |
US20230081696A1 (en) | Methods for Shunting Clustered Gateways | |
CN106970837B (zh) | 一种信息处理方法及电子设备 | |
CN104217292A (zh) | 一种基于云计算的服务平台*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140604 |
|
WD01 | Invention patent application deemed withdrawn after publication |