CN103838574A - 一种对数据表进行分组汇总的通用方法 - Google Patents

一种对数据表进行分组汇总的通用方法 Download PDF

Info

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
Application number
CN201410057584.6A
Other languages
English (en)
Inventor
付洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Group Shandong General Software Co Ltd
Original Assignee
Inspur Group Shandong General Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Group Shandong General Software Co Ltd filed Critical Inspur Group Shandong General Software Co Ltd
Priority to CN201410057584.6A priority Critical patent/CN103838574A/zh
Publication of CN103838574A publication Critical patent/CN103838574A/zh
Pending legal-status Critical Current

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所述对数据表进行分组汇总的通用方法,其特征在于:进行合并的两个数据表结构相同,并可设置过滤条件;并可通过指定统计类型来汇总数据;其中,设置一个或一组字段,在数据表中过滤掉相同的数据行。
CN201410057584.6A 2014-02-20 2014-02-20 一种对数据表进行分组汇总的通用方法 Pending CN103838574A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 浪潮集团山东通用软件有限公司 一种利用编写实体类特性实现简单数据库的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
吕玉桂: "《SQL Server2008数据库开发经典案例教程》", 31 October 2013, 中国水利水电出版社 *
程万里等: "《计算机文化基础》", 31 August 2006, 中国铁道出版社 *
闫英琪: "《Visual FoxPro 6.0数据库应用》", 31 March 2013, 西北工业大学出版社 *

Cited By (3)

* Cited by examiner, † Cited by third party
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 山东程序元软件有限公司 构造组合函数块的方法及装置、组合函数块、存储介质

Similar Documents

Publication Publication Date Title
CN101651576B (zh) 告警信息处理方法和系统
CN110069495A (zh) 数据存储方法、装置和终端设备
CN102915344B (zh) 一种sql语句处理方法及装置
CN104750620B (zh) 一种内存迁移方法及装置
CN104462121A (zh) 数据处理方法、装置及系统
CN109299164A (zh) 一种数据查询方法、计算机可读存储介质及终端设备
CN107220123A (zh) 一种解决Spark数据倾斜方法及系统
CN107832440B (zh) 一种数据挖掘方法、装置、服务器及计算机可读存储介质
CN104461551A (zh) 基于数据并行处理的大数据处理系统
CN104077420A (zh) 一种数据导入HBase数据库的方法和装置
CN106569898A (zh) 一种资源分配的方法以及移动终端
CN105868389A (zh) 一种基于mongoDB的数据沙盒实现方法及系统
US20160269428A1 (en) Data processing
CN103838574A (zh) 一种对数据表进行分组汇总的通用方法
CN104461737A (zh) 一种内存管理方法和装置
CN101556586A (zh) 一种自动采集数据的方法、系统和装置
CN104881461A (zh) 一种快速数据保存方法
CN103905310B (zh) 报文处理的方法及转发设备
CN106777265B (zh) 一种业务数据的处理方法及装置
CN109739872A (zh) 一种sql语句处理的实现方法、系统及操作方法
CN104731800A (zh) 数据分析装置
CN104965737B (zh) 更新数据的获取方法及装置
CN105551500B (zh) 一种音频信号处理方法及装置
CN106777375A (zh) 一种数据适配系统
CN107341255A (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