当前位置: 首页 > 编程日记 > 正文

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);


 

相关文章:

快速上手微软 “群策 MARO” 平台,打造简易的共享单车场景

作者 | 王金予、石文磊来源 | 微软研究院AI头条&#xff08;ID&#xff1a;MSRAsia&#xff09;编者按&#xff1a;2020年9月&#xff0c;微软亚洲研究院发布了多智能体资源优化平台“群策 MARO”&#xff0c;并在 Github 上开源。近日&#xff0c;MARO 更新了0.2版本&#xff…

pip 代理设置,坑爹的代理继续

Linux ubuntu 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux 一开始只是试用了export http_proxyhttp://ip:port&#xff0c;然后执行sudo -E pip install requests的时候总是报 Cannot fetch index base URL http://pypi.pyth…

开源交换需新框架 技术团队也待整合

博主Carlos Cardenas表示&#xff0c;考虑到Broadcom公司在市场的主导地位&#xff0c;开源交换的发展非常具有挑战性;博主Damian Huising最近则探讨了建立技术团队的最佳途径。 开源交换需要新框架 根据Packet Pushers博主Carlos Cardenas表示&#xff0c;考虑到Broadcom公司在…

为ASP.NET控件添加常用的JavaScript操作

1&#xff0e;为button控件添加确认功能要想为服务器控件添加客户端的事件&#xff0c;需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性&#xff0c;它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此…

玩转 Python 爬虫,需要先知道这些

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国爬虫基本原理1. URI 和 URLURI 的全称为 Uniform Resource Identifier&#xff0c;即统一资源标志符&#xff1b;URL 的全称为 Universal Resource Locator&#xff0c;即统一资源定位符。比如Github的图标&#xff1a;htt…

oracle命令导入表

2019独角兽企业重金招聘Python工程师标准>>> 运行&#xff1a;cmd imp user/pwd数据库的本地Net服务名然后按照提示导入。 转载于:https://my.oschina.net/unlimit/blog/159428

通过Google挖掘细分市场的一个案例

我是亦仁&#xff0c; 前阿里运营&#xff0c;现持续创业者。 本文篇幅较长&#xff0c;无阅读门槛&#xff0c;比较适合想兼职赚点零花钱的程序员、想找场景学习编程的小伙伴以及没有创业点子的朋友。全文4000字&#xff0c;完整读完大约需要10分钟。 理论上来说&#xff0c;如…

GCC生成的汇编代码

假设我们写了一个C代码文件 code.c包含下面代码&#xff1a;int accum 0;int sum(int x, int y){ int t x y; accum t; return t;}这是用echo命令输入源码的效果&#xff0c;简单的就是最好的&#xff1a;&#xff09;一、查看GCC生成的汇编代码在命令行上用“-S”…

2021年浅谈多任务学习

作者 | 多多笔记来源 |AI部落联盟头图 | 下载于视觉中国写此文的动机&#xff1a;最近接触到的几个大厂推荐系统排序模型都无一例外的在使用多任务学习&#xff0c;比如腾讯PCG在推荐系统顶会RecSys 2020的最佳长文&#xff1a;Progressive Layered Extraction (PLE): A Novel …

[K/3Cloud]关于数据库sa密码更改,管理中心登录不上的问题。

有时候可能应为别的原因可能一不小心更改了数据库的密码&#xff0c;导致K/3 Cloud管理中心和单据打不开。 这个时候其实只要在注册一下就能解决了&#xff0c;在浏览器中输入http://192.168.25.35:8000/Silverlight/CMC.aspx 用这个地址重新注册就可以了。转载于:https://www.…

597个智慧城市相关试点将临大考

近600个智慧城市试点面临国家部委的首次评价检验。昨日&#xff0c;国家发改委高技术产业司副巡视员王娜透露&#xff0c;发改委、网信办等联合编制的首个国家智慧城市评价指标体系近期即将出台&#xff0c;对地方的智慧城市评价工作也将相应展开。 国家发改委高技术产业司副巡…

(原创)JAVA注解应用——实现属性的自动检测

一、什么是注解 Annotation(注解)是JDK5.0及以后版本引入的新特性。它可以用于创建文档&#xff0c;跟踪代码中的依赖性&#xff0c;甚至执行基本编译时检查。注解是以‘注解名’在代码中存在的&#xff0c;根据注解参数的个数&#xff0c;我们可以将注解分为&#xff1a;标记注…

整合vs2005sp1到vs2005安装文件中

首先,需要大于3G的硬盘空间(解压VS2005用),这个补丁只会应用到VS2005上,和我们的MSND是没有啥关系的.1.解压VS2005.首先需要把我们VS2005安装光盘内的安装文件解压在我们的硬盘上.使用如下命令: 程序代码msiexec.exe /a G:/VS/vs_setup.msi TARGETDIRD:/VSSETUP /L*vx install.…

唏嘘!程序员,你的年底KPI完不成的原因找到了!

加班是每个互联网人不愿面对而却又绕不过去的话题&#xff0c;就连面试时“你怎么看待加班”的问题都成了必答题。现在临近年底&#xff0c;大家都在努力冲业绩&#xff0c;期待拿更多的年终奖&#xff0c;回家过个“富足年”。年底冲业绩&#xff0c;势必会增加我们的工作量&a…

Hooq 登陆新加坡,“亚洲版 Netflix ”要与对标公司抢夺东南亚视频市场

近日&#xff0c;在进入菲律宾、泰国、印度、印尼四国之后&#xff0c;Hooq 正式在新加坡推出其视频服务。 Hooq 是一家视频点播流媒体平台&#xff0c;成立于 2015 年&#xff0c;由 Singtel (新加坡最大的电信公司)、索尼和华纳兄弟共同出资 2200 万美元成立&#xff0c;其中…

c#如何取自身应用程序文件名和路径?

// 应用程序的路径&#xff0c;不带文件名 Application.StartupPath(); // 产品名称 Application.ProductName; // 产品版本&#xff08;可由.net自动升成版本控制&#xff09; Application.ProductVersion

使用阿里云服务器时遇到的问题及解决办法

2019独角兽企业重金招聘Python工程师标准>>> 1、在命令行里面直接输入中文数据会乱码&#xff0c;如果用phpmyadmin就不会了。 2、json返回的数据中中文乱码&#xff0c;通过修改文件的编码可以解决。 3、页面文件中<body>标签后面多了个空格和空行&#xff0…

“算法不行,干啥都不行!”面试官:面试基本都会考这点!

无论你是 Java&#xff0c;Python&#xff0c;还是 PHP&#xff0c;面试总逃脱不了一个问题&#xff1a;算法&#xff01;据统计&#xff0c;各大厂笔试平均通过率只有 10%~20%&#xff0c;基本都折在了算法上。滴滴出行笔试通过率为 18.2%&#xff1b;腾讯秋招笔试通过率不足1…

归于软银帐下,ARM需要接受的变与不变

摘要&#xff1a;软银此次对于ARM的收购&#xff0c;在无形之中也拉近了ARM与日本IDM大厂间的合作距离&#xff0c;可以帮助其更好地进行超算芯片的制造&#xff1b;而从另一个层面来讲&#xff0c;“后K超级计算机”又何尝不是ARM的一个“活字招牌”&#xff1f;7月中旬&#…

C#中TextBox只能输入数字的代码

private void txbSleep_KeyPress(object sender, KeyPressEventArgs e) { if (!(Char.IsNumber(e.KeyChar) || e.KeyChar /b)) { e.Handled true; } }

Linux技巧总结(个人经验版)

1&#xff1a;善用桌面&#xff1a;1、图形界面的编辑&#xff0c;2、终端只要开机就在第2桌面&#xff0c;3、浏览器在第3桌面&#xff0c;4、娱乐在第4桌面。 2&#xff1a;cd命令中&#xff0c;输入中文目录很不方便&#xff0c;用 ln -s 桌面 desktop 创建软链接&#xff0…

一流科技完成5000万人民币A轮融资,高瓴创投独家领投

2月4日&#xff0c;专注于人工智能基础设施软件的研发工作的一流科技宣布完成由高瓴创投独家领投的A轮融资&#xff0c;这是其两年来再次开放融资&#xff0c;融资总额5000万元人民币。本次融资将用于高端人才招募、核心产品研发和商业模式拓展。自2017年创立以来&#xff0c;一…

发改委:加速布局车联网与自动驾驶

发改委网站5日消息&#xff0c;近日&#xff0c;为深入贯彻落实《国务院关于积极推进“互联网”行动的指导意见》(国发〔2015〕40号)&#xff0c;国家相关部门联合发布《推进“互联网”便捷交通促进智能交通发展的实施方案》(以下简称《实施方案》)&#xff0c;旨在全面推进交通…

花了两天,终于把 Python 的 setup.py 给整明白了

作者 | 写代码的明哥来源 | Python编程时光头图 | 下载于视觉中国为什么需要对项目分发打包平常我们习惯了使用 pip 来安装一些第三方模块&#xff0c;这个安装过程之所以简单&#xff0c;是因为模块开发者为我们默默地为我们做了所有繁杂的工作&#xff0c;而这个过程就是 打包…

MyBatis 中的 set 元素用法(MyBatis 3.1.1)

2019独角兽企业重金招聘Python工程师标准>>> 现在的写法A&#xff1a; <update id"update" parameterType"ruleItem.Bean"> update t_rule_item <!-- set id#{id} --> <set> <if test"ruleId!null and rul…

在.NET环境下发送邮件

在微软.NET环境中的System.Web.Mail的命名空间里,提供了几个类,使得你根本就不需要了解POP3等一系列网络协议,就可以在程序中轻松的发送邮件,非常简单,本文就简要的介绍一下,如何用C#语言来实现。 首先,我们要添加这个命名空间 using System.Web.Mail; 现在,我们来生成邮件本身…

Google刚刚开源了一款用于测试iOS应用的工具:EarlGrey

Google于今日宣布了开源的EarlGrey软件&#xff0c;以便开发者更轻松地构建和运行“面向iOS apps源码”的用户界面测试(是的&#xff0c;你没看错!)当前托管于GitHub上、遵从开源Apache授权的EarlGrey&#xff0c;由Objective-C编写而成。不过本次发布的重要性在于&#xff0c;…

发送邮件程序(Csharp2005)

我觉得懂得编写发送邮件客服端丰常重要.这可以把它嵌入到你的软件里加强与用户的沟通与可以收集程运行的错误信息.以与我编写一小的发送邮件客服端来与在家交流.程序如下:发送邮件解决方案下载 接下来,我来说一下我开发的过程与体会:创建发送邮件客服端步骤:1.创建Smtp服务器…

reindex-maven 私服(nexus)架设以及项目管理中遇到的问题及解决方案(updating)

--- 用maven 的过程中 大问题小问题实在是不少 &#xff0c;就不一篇文章一篇文章的写了&#xff0c;干脆写在一起 ---- ------- nexus 加索引 点击Administration菜单下面的Repositories&#xff0c;将这三个仓库Apache Snapshots&#xff0c;Codehaus Snapshots&#xff…

爬了20W+条猫咪交易数据,它不愧是人类团宠

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国前言看到可爱的猫咪表情包&#xff0c;总是会忍不住收藏&#xff0c;晒部分图如下&#xff1a;认识的一些朋友也养了猫&#xff0c;比如橘猫、英短、加菲猫之类的&#xff0c;看他们发朋友圈撸猫&#xff0c;老羡慕了&…