采用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小时滑动平均值相关推荐

  1. SQL Server 数据库之聚合函数

    聚合函数 1. 概述 2. 聚合函数 2.1 Sum 函数求和 2.2 Avg 求平均值 2.3 Min 函数返回最小值 2.4 Max 函数返回最大值 2.5 Count 函数统计表记录数 2.6 ...

  2. Hive自定义聚合函数UDAF(计算中位数)

    背景需求 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分.对于有限的数集, ...

  3. SQL Server中自定义函数和游标应用的经典案例

    2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...

  4. SQL Server 2012新增的内置函数尝试

    SQL Server 2012新增的内置函数尝试 简介 SQL Server2012新增了一些内置函数来让开发人员使用起来更加容易.可以减少代码量,下面我们将SQL Server新增的函数分为几类分别 ...

  5. percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数

    percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...

  6. SQL Server 2012导入Excel文件时 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    问题 在使用Microsoft SQL Server 2012 的SSMS 时,向数据库导入Excel数据,报错 "未在本地计算机上注册"Microsoft.ACE.OLEDB.1 ...

  7. SQL Server Window Function 窗体函数读书笔记二 - A Detailed Look at Window Functions

    这一章主要是介绍 窗体中的 Aggregate 函数, Rank 函数, Distribution 函数以及 Offset 函数. Window Aggregate 函数 Window Aggrega ...

  8. SQL Server 2012 各版本功能比较

     http://blog.csdn.net/xcbsdu/article/details/8259131 http://msdn.microsoft.com 本主题提供有关不同版本的 SQLSer ...

  9. sql用于字符串的聚合函数_SQL字符串函数用于数据整理(争用)

    sql用于字符串的聚合函数 In this article, you'll learn the tips for getting started using SQL string functions ...

  10. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.1 窗口函数的背景...

    本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.1节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...

最新文章

  1. python数据挖掘主要特点_【Python数据挖掘】第六篇--特征工程
  2. java异常处理试题答案_Java 面试题和答案 - (下)
  3. vmare安装ghostwin7
  4. Oracle编程入门经典 第2章 SQLPlus和基本查询
  5. JavaScript-Map和Set
  6. 再读王永庆卖米的故事
  7. mysql学习之路三(转)
  8. 【LOJ】 #2521. 「FJOI2018」领导集团问题
  9. layui框架和vue哪个好_小颖的前端框架
  10. excel删除行 uipath_工作再忙,也要学会这10个最经典的Excel小技巧
  11. 推荐5款优质的黑科技软件,好不好用你来判断
  12. 震网三代(CVE-2017-8464)
  13. Oracle如何创建数据库
  14. python如何debug找到错误_调试python,我找不到哪里出错了?
  15. 角色游戏二(NPC对话)
  16. 测绘专硕要学计算机吗,测绘工程专硕专业介绍_测绘工程非全日制研究生(专业硕士)_125在职研究生...
  17. Fedora Project, extras 目录(进入小心)
  18. QQ表情里的股市晴雨表
  19. 洛谷P7529 Permutation G
  20. Vivado出现编译错误:[USF-XSim 62] 'compile' step failed with error(s) while executing...

热门文章

  1. python数据库操作sqlite_用Python进行SQLite数据库操作
  2. (3)Matplotlib_subplot, subplots
  3. Java游戏程序设计教程 第4章 游戏的运行机制
  4. C小项目 简易英汉词典
  5. jupyter notbook远程连接配置(Ubuntu16.04)
  6. UserWarning: h5py is running against HDF5 1.10.5 when it was built against 1.10.4
  7. 采用SVM和神经网络的车牌识别(流程图及详细解释)
  8. 纪念硕士论文圆满答辩结束——20180614
  9. Kubernetes架构图 Architecture Workload Networking Storage RBAC
  10. pdf文字无法复制怎么办?unlock解密pdf