转自:http://www.cnblogs.com/hfliyi/archive/2013/01/08/2851944.html

项目中遇到计算平均值、标准偏差、平均值+标准偏差、平均值+2倍标准偏差、平均值+3倍标准偏差、平均值-标准偏差、平均值-2倍标准偏差、平均值-3倍标准偏差,要求提取出共用的方法(数据源可以是excel、csv、文本文件等),为此,想到取出数据再计算相应内容.

public object Compute(string expression,string filter)

expression:要计算的表达式,参数需要时聚合函数。
filter:要限制在表达式中进行计算的行的筛选器
object:计算结果
举例如下:
 例子
using (OracleConnection con = new OracleConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()))
{
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM EMP";
OracleDataAdapter oda = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable dt = ds.Tables[];
//求和
string sum = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "")), ).ToString();
//求平均
string avg = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "")), ).ToString();
//具有筛选条件 求和
string sumFilter = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "SAL<3000")), ).ToString();
//具有筛选条件 求平均
string avgFilter = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "SAL<3000")), ).ToString();
//标准偏差
string stDev = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "")), ).ToString();
//具有筛选条件标准偏差
string stDevFilter = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "sal<3000")), ).ToString();
//最小值
string min = dt.Compute("min(sal)", "").ToString();
//具有筛选条件的最小值
string minFiter = dt.Compute("min(sal)", "sal<3000").ToString();
//平均值+标准偏差
string avgStDev = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)+stdev(sal)", "")), ).ToString();
dt.Columns.Add("cl", typeof(string),"len(ename)");
StringBuilder sb = new StringBuilder();
sb.Append("求和:" + sum + "<br/>");
sb.Append("求平均:" + avg + "<br/>");
sb.Append("标准偏差:" + stDev + "<br/>");
sb.Append("最小值:" + min + "<br/>");
sb.Append("具有筛选条件求和:"+sumFilter+"<br/>");
sb.Append("具有筛选条件求平均:"+avgFilter+"<br/>");
sb.Append("具有筛选条件标准偏差:"+stDevFilter+"<br/>");
sb.Append("具有筛选条件的最小值:"+minFiter+"<br/>");
sb.Append("平均值+标准偏差:"+avgStDev+"<br/>");
lbShow.Text = sb.ToString();
}

同时 dataset同样适用:dataset ds=new dataset(); ds.tables[0].compute(string,string);

最新文章

  1. Asp.Net之自定义表达式构造器(ExpressionBuilder)
  2. jQuery - 5.样式操作
  3. java 泛型 -- 泛型类,泛型接口,泛型方法
  4. React Native Android增加本地图片
  5. notification 通知
  6. 如何从SAP中查找BADI
  7. 自定义View(二)--继承自ViewGroup
  8. centos下安装chdmg
  9. 一个很好的幻灯片效果的jquery插件--kinMaxShow
  10. java中的静态代码块等执行顺序
  11. JAVA List&lt;T&gt; 如何初始化
  12. lpc1768usb端点响应以及描述符定义
  13. HDU - 1846 Brave Game 巴什博弈
  14. 产品经理之PRD详解
  15. Python开发【第四篇】函数
  16. 每天学点SpringCloud(十一):Hystrix仪表盘
  17. 安装老版本redis .NET 客户端
  18. How to understand three foundanmental faults?
  19. 【笔记】Python简明教程
  20. lintcode-208-赋值运算符重载

热门文章

  1. Oracle 查询类似 select top 的用法
  2. 8.1H5学习笔记
  3. VC++ 如何在显示对话框的时候,指定焦点控件!
  4. spring集成freemaker 制作短信模板
  5. Python 包的相对导入讲解
  6. java 链接jdbc
  7. Android消息推送——JPush极光推送
  8. Deep Learning(1)-Introduction学习总结
  9. git 使用命令总结
  10. 对需要聚类的数据使用canopy做初步的计算