DataTable中数据记录的统计

原创 2004年10月13日 16:47:00

DataTable中数据记录的统计
我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Service获得了DataSet,这个时候,可是没有办法回头去修改Select语句来获取这些统计了。那么在DataSet/DataTable中是否可以进行统计呢?答案是肯定的。


 
  在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有等于无(或许这个方法只是针对于DataGrid求取小计用吧),因为这个方法中采用的是DataGrid的ItemDataBind事件来对数据进行累加,同我们手动写代码统计没有什么区别。
  
  本文介绍一个简单的方法,不需要逐条记录进行计算就可以轻松的获得DataTable中的记录统计结果。这个简单的方法就是调用功能强大的DataTable的函数Compute。
  
  一、调用说明(仅以C#为例,下同):
  
  public object Compute(string strExpression,string strFilter)
  
  参数:
  
  strExpression:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式
  
  strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计
  
  二、调用举例:
  
  以下示例,假设一个产品销售表table,描述某商场中各促销员销售的实际记录,包含字段为:姓名(Name)、性别(Sex,0为女,1为男)、生日(Birthday)、销售产品的代码(ProID)、销售的数量(Quantity)、销售价格(Price)。
  
  1.统计所有性别为女的销售员的数量:
  table.Compute("Count(*)","Sex=0");
  
  2.统计所有销售员中年龄大于20岁的
  table.Compute("Count(*)","Birthday<'"+today);//today为今天的日期字符串
  
  3.统计销售产品的平均价格
  table.Compute("Aver(Price)","true");
  
  4.统计产品代码为1的产品销售数量:
  table.Compute("Sum(Quantity)","ProID=1");
  
  5.统计所有产品的销售总金额:
  要统计总销售金额,由于table中不存在某项产品某个促销员销售的金额数据,但我们可以通过Quantity*Price来获得。比如:
  table.Compute("Sum(Quantity*Price)","true");
  
  这里一个问题是:DataTable的统计功能没有SqlServer强,这个统计是错误的,因为Compute的统计不具备Sum(Quantity*Price)这样数据的功能。那怎么办呢?
  
  对于这样复杂数据的统计,我们可以在DataTable中创建一个新的字段来完成,比如Amount,同时设置该字段的Expression为Quantity*Price,这样我们就可以使用统计功能了:
  table.Compute("Sum(Amount)","true");
  

DataTable用中使用Compute 实现简单的DataTable数据的统计

調用格式: object DataTable.Compute(string expression,string filter); 參數: expression:要計算的表達式 filter:...
  • chifengchifeng
  • chifengchifeng
  • 2013年08月02日 10:05
  • 1275

[C#技术] DataSet(DataTable)轻松的通过Sum、Aver、Count等统计出相关结果

本文介绍一个简单的方法,不需要逐条记录进行计算就可以轻松的获得DataTable中的记录统计结果。这个简单的方法就是调用功能强大的DataTable的函数Compute。      一、调用说明(...
  • qiushengb
  • qiushengb
  • 2014年10月24日 15:21
  • 6152

DataTable中查询符合条件的数据

Dim rows As DataRow() = datatable.Select("客户='" & custom & "' and 持卡人身份证号码='" & taskrow("持卡人身份证号码")....
  • swarb
  • swarb
  • 2012年03月22日 13:59
  • 1370

筛选DataTable中的数据

2013-08-13 15:41 by 糯米粥, 61 阅读, 0 评论, 收藏, 编辑 DataTable dt = bll.GetTable(); //查...
  • ybhjx
  • ybhjx
  • 2015年12月23日 15:04
  • 1023

DataTable中数据记录的统计

DataTable中数据记录的统计 我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTabl...
  • lanpeng
  • lanpeng
  • 2008年08月20日 15:45
  • 326

统计一个数据库中每一个表的记录数

use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = '数据库名' order b...
  • zyf_balance
  • zyf_balance
  • 2017年06月02日 13:58
  • 443

Java统计数据库表中记录数

public static int count(String txyl_table) {// 获取用户数量     int i = 0;// Store_Information     Connect...
  • umgsai
  • umgsai
  • 2014年08月10日 10:07
  • 1424

C#关于取DataTable中中间数据的方法

DataTable dt = new DataTable(); var test = dt.AsEnumerable(); //跳过dt的前200行,取后100行 即取得200-300行 tes...
  • pp_fzp
  • pp_fzp
  • 2016年03月24日 21:27
  • 454

C#修改datatable数据

DataRow[] drEmployees = dt.Select(" aaset_id in ('123','456') ");         for (int i = 0; i      ...
  • Veteran_
  • Veteran_
  • 2014年03月31日 09:32
  • 5666

DataTable中的记录统计

我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Serv...
  • ruiqi317
  • ruiqi317
  • 2011年10月01日 00:16
  • 203
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataTable中数据记录的统计
举报原因:
原因补充:

(最多只允许输入30个字)