DataTable中数据记录的统计
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中数据记录的统计相关推荐
- mysql数据表中取几列_MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用sel ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- C#中将DataTable中数据导出到csv文件中
在上一篇博文[C#读取CSV文件的方法]中,我介绍了读取csv文件中数据的方法,现在我来介绍下将datatable中的数据导出到csv文件中的方法,废话不 多说了,deme程序的代码如下: prote ...
- (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...
转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...
- c# 把DataTable中数据批量导入新的sqlite的db文件中
需求 : 使用sqlite数据库, 将文件A.db 中某张数据表的数据,备份到文件B.db中. 解决方案: 使用dataTableUpdate.不推荐 可以使用事务进行批量处理. 目的: 避免手动拼接 ...
- MySQL8单表记录多少_mysql学习笔记之8(单表数据记录查询)_mysql
mysql学习笔记之八(单表数据记录查询) 查询数据记录,就是指从数据库对象中获取所要求的数据记录.mysql中提供了各种不同方式的数据查询方法. 一.简单数据记录查询 select field1,f ...
- 在DataTable中更新、删除数据
在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上,更新和删除如下:* ----但是在更新和删除前,首先要找出要更新和删除的记录.* 一种方 ...
- 将DataTable中的数据导入到数据库中
上次在根据excel的文件的路径提取其中表的数据到DataSet中 一文中介绍了将Excel文件中的数据读取到DataSet中的方法,今天我来介绍下我曾经在项目中用到的一个将DataTable中的数据 ...
- datatable 导入mysql 解决_将DataTable中的数据导入到数据库中
上次在 小小的改动即可. /// /// 将DataTable中数据写入数据库中 /// /// /// public static bool WriteDataToDB(DataTable dt) ...
最新文章
- 从Docker 到Jenkins 到Ansible的部署经验
- 基于SpringBoot+Vue前后端分离管理系统
- Django两天搭建个人博客
- java学习笔记2022.2.11
- 震撼!豆瓣评分9.3,这部纪录片带你感受生命之重!
- 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法
- VS2010 MFC多文档中的工具栏CMFCToolBar停靠的问题
- 用Python爬取Bilibili视频,难吗?
- 团战开黑必备“良药”了解一下!
- 【系统分析师之路】2012年上系统分析师下午论文真题
- opencv-python API 官网文档
- 【实战讲解】数据血缘落地实施
- 产品思维训练 | 常见的用户增长手段有哪些?
- Stefan's Nutch Documentation
- Jmeter循环获取JDBC查询结果及断言数据库查询结果
- [题解]CodeForces1208G Polygons
- 什么是SEO?SEO是什么职业?
- SAP ECC 和 S4HANA Material 物料库存管理的模型比较
- InjectFix原理学习(实现修复加法的热更)
- 操作系统纯净版 下载地址
热门文章
- fb50 sap 报记账码未定义_SAP隐秘的角落:记账代码Posting Key
- java servlet 路径_JavaServlet 路径书写总结
- Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)
- Opencv-python 图像处理基础知识
- KMP-next数组
- 深度学习--TensorFlow(7)拟合(过拟合处理)(数据增强、提前停止训练、dropout、正则化、标签平滑)
- 《概率机器人》里程计运动模型gmapping中代码解析
- Maya 2022中的硬表面建模技术学习视频教程
- Linux多线程管理: 多线程编程
- [NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)