sql server 2012 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值
采用c#开发dll,并添加到sql server 中。
具体代码,可以用visual studio的向导生成模板。
using System; using System.Collections; using System.Data; using Microsoft.SqlServer.Server; using System.Data.SqlTypes; using System.IO; using System.Text;[Serializable] [Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.UserDefined, //use clr serialization to serialize the intermediate resultIsInvariantToNulls = true, //optimizer propertyIsInvariantToDuplicates = false, //optimizer propertyIsInvariantToOrder = false, //optimizer propertyMaxByteSize = 8000) //maximum size in bytes of persisted value ] public class MAX_O3_8HOUR_ND : IBinarySerialize {/// <summary>/// The variable that holds the intermediate result of the concatenation/// </summary>private StringBuilder intermediateResult;/// <summary>/// 系统初始化/// </summary>public void Init(){this.intermediateResult = new StringBuilder();}/// <summary>/// 积累文本内容,null除外,一般用标点符号隔开。/// </summary>/// <param name="value"></param>public void Accumulate(SqlString value){if (value.IsNull){return;}this.intermediateResult.Append(value.Value).Append(',');}/// <summary>/// Merge the partially computed aggregate with this aggregate./// </summary>/// <param name="Group"></param>public void Merge(MAX_O3_8HOUR_ND Group){this.intermediateResult.Append(Group.intermediateResult);}/// <summary>///在最后被调用,返回聚合函数结果/// </summary>/// <returns></returns>public SqlString Terminate(){string output = string.Empty;ArrayList list = new ArrayList();if (this.intermediateResult != null&& this.intermediateResult.Length > 0){output = this.intermediateResult.ToString(0, this.intermediateResult.Length - 1);string [] result=output.Split(',');float max = 0;if (result.Length >= 8){for (int i = 0; i <= result.Length - 8; i++){float re = 0;for (int j = i; j < 8 + i; j++){re = re + Convert.ToSingle(result[j]);}re=re/8;if (re > max){max = re;}}output = Math.Ceiling(max).ToString();}else{output=string.Empty;}}return new SqlString(output);}public void Read(BinaryReader r){intermediateResult = new StringBuilder(r.ReadString());}public void Write(BinaryWriter w){w.Write(this.intermediateResult.ToString());} }
dll添加到sql server,创建聚合函数。
CREATE ASSEMBLY [MAX_O3_8HOUR_ND] AUTHORIZATION [dbo] FROM 'c:\MAX_O3_8HOUR_ND.dll' WITH PERMISSION_SET = SAFE;CREATE AGGREGATE [dbo].[MAX_O3_8HOUR_ND] (@FieldValue [nvarchar](4000)) RETURNS [nvarchar](4000) EXTERNAL NAME [MAX_O3_8HOUR_ND].[MAX_O3_8HOUR_ND];
sql server 开启 CLR支持:
EXEC sp_configure 'clr enabled', 1 RECONFIGURE WITH OVERRIDE GO
示例:
SELECT FDATE,SITENAME, dbo.MAX_O3_8HOUR_ND(O3)
FROM (select top 100 percent * from MONITOR_ND order by ftime)a
GROUP BY SITENAME,FDATE
转载于:https://www.cnblogs.com/tiandi/p/5605130.html
sql server 2012 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值相关推荐
- SQL Server 数据库之聚合函数
聚合函数 1. 概述 2. 聚合函数 2.1 Sum 函数求和 2.2 Avg 求平均值 2.3 Min 函数返回最小值 2.4 Max 函数返回最大值 2.5 Count 函数统计表记录数 2.6 ...
- Hive自定义聚合函数UDAF(计算中位数)
背景需求 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分.对于有限的数集, ...
- SQL Server中自定义函数和游标应用的经典案例
2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...
- SQL Server 2012新增的内置函数尝试
SQL Server 2012新增的内置函数尝试 简介 SQL Server2012新增了一些内置函数来让开发人员使用起来更加容易.可以减少代码量,下面我们将SQL Server新增的函数分为几类分别 ...
- percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数
percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...
- SQL Server 2012导入Excel文件时 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
问题 在使用Microsoft SQL Server 2012 的SSMS 时,向数据库导入Excel数据,报错 "未在本地计算机上注册"Microsoft.ACE.OLEDB.1 ...
- SQL Server Window Function 窗体函数读书笔记二 - A Detailed Look at Window Functions
这一章主要是介绍 窗体中的 Aggregate 函数, Rank 函数, Distribution 函数以及 Offset 函数. Window Aggregate 函数 Window Aggrega ...
- SQL Server 2012 各版本功能比较
http://blog.csdn.net/xcbsdu/article/details/8259131 http://msdn.microsoft.com 本主题提供有关不同版本的 SQLSer ...
- sql用于字符串的聚合函数_SQL字符串函数用于数据整理(争用)
sql用于字符串的聚合函数 In this article, you'll learn the tips for getting started using SQL string functions ...
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.1 窗口函数的背景...
本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.1节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...
最新文章
- python数据挖掘主要特点_【Python数据挖掘】第六篇--特征工程
- java异常处理试题答案_Java 面试题和答案 - (下)
- vmare安装ghostwin7
- Oracle编程入门经典 第2章 SQLPlus和基本查询
- JavaScript-Map和Set
- 再读王永庆卖米的故事
- mysql学习之路三(转)
- 【LOJ】 #2521. 「FJOI2018」领导集团问题
- layui框架和vue哪个好_小颖的前端框架
- excel删除行 uipath_工作再忙,也要学会这10个最经典的Excel小技巧
- 推荐5款优质的黑科技软件,好不好用你来判断
- 震网三代(CVE-2017-8464)
- Oracle如何创建数据库
- python如何debug找到错误_调试python,我找不到哪里出错了?
- 角色游戏二(NPC对话)
- 测绘专硕要学计算机吗,测绘工程专硕专业介绍_测绘工程非全日制研究生(专业硕士)_125在职研究生...
- Fedora Project, extras 目录(进入小心)
- QQ表情里的股市晴雨表
- 洛谷P7529 Permutation G
- Vivado出现编译错误:[USF-XSim 62] 'compile' step failed with error(s) while executing...
热门文章
- python数据库操作sqlite_用Python进行SQLite数据库操作
- (3)Matplotlib_subplot, subplots
- Java游戏程序设计教程 第4章 游戏的运行机制
- C小项目 简易英汉词典
- jupyter notbook远程连接配置(Ubuntu16.04)
- UserWarning: h5py is running against HDF5 1.10.5 when it was built against 1.10.4
- 采用SVM和神经网络的车牌识别(流程图及详细解释)
- 纪念硕士论文圆满答辩结束——20180614
- Kubernetes架构图 Architecture Workload Networking Storage RBAC
- pdf文字无法复制怎么办?unlock解密pdf