C#实现SQL SERVER2008聚合函数

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 下面实现一个去掉最大值和最小值之后的平均值函数: 单击项目右键,在弹出菜单中选择"添加"->"聚合",取名为TrimmedMean.cs,代码如下: 1 using System; 2 using System.

下面实现一个去掉最大值和最小值之后的平均值函数:

单击项目右键,在弹出菜单中选择"添加"->"聚合",取名为TrimmedMean.cs,代码如下:

 1 using System;
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 using System.Data.SqlTypes;
 5 using Microsoft.SqlServer.Server;
 6 
 7 
 8 [Serializable]
 9 [Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.Native)]
10 public struct TrimmedMean
11 {
12     //    SELECT   AVG(TotalDue) AS AvgTotal, 
13     //dbo.TrimmedMean(TotalDue) AS TrimmedTotal
14     //FROM      Sales.SalesOrderHeader
15     public void Init()
16     {
17         // 在此处放置代码
18         this.numValues = 0;
19         this.totalValue = 0;
20         this.maxValue = SqlMoney.MinValue;
21         this.minValue = SqlMoney.MaxValue;
22     }
23 
24     public void Accumulate(SqlMoney Value)
25     {
26         // 在此处放置代码
27         if (!Value.IsNull)
28         {
29             this.numValues++;
30             this.totalValue += Value;
31             if (Value < this.minValue)
32                 this.minValue = Value;
33             if (Value > this.maxValue)
34                 this.maxValue = Value;
35         }
36     }
37 
38     public void Merge(TrimmedMean Group)
39     {
40         // 在此处放置代码
41         if (Group.numValues > 0)
42         {
43             this.numValues += Group.numValues;
44             this.totalValue += Group.totalValue;
45             if (Group.minValue < this.minValue)
46                 this.minValue = Group.minValue;
47             if (Group.maxValue > this.maxValue)
48                 this.maxValue = Group.maxValue;
49         }
50     }
51 
52     public SqlMoney Terminate()
53     {
54         // 在此处放置代码
55         if (this.numValues < 3)
56             return (SqlMoney.Null);
57         else
58         {
59             this.numValues -= 2;
60             this.totalValue -= this.minValue;
61             this.totalValue -= this.maxValue;
62             return (this.totalValue / this.numValues);
63         }
64     }
65 
66     // 这是占位符成员字段
67     private int numValues;
68     private SqlMoney totalValue;
69     private SqlMoney minValue;
70     private SqlMoney maxValue;
71 }


单击项目右键,弹出菜单中先"生成",再"部署",在SQL SERVER 2008中测试如下:

SELECT

  AVG(TotalDue) As AverageTotal,

  dbo.TrimmedMean(TotalDue) AS TrimedAverageTotal

FROM Sales.SalesOrderHeader

 

使用的是AdventureWorks示例数据库

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
158 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
28天前
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
27 1
|
2月前
|
SQL 网络协议 数据库连接
已解决:连接SqlServer出现 provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程【C#连接SqlServer踩坑记录】
本文介绍了解决连接SqlServer时出现“provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程”错误的步骤,包括更改服务器验证模式、修改sa用户设置、启用TCP/IP协议,以及检查数据库连接语句中的实例名是否正确。此外,还解释了实例名mssqlserver和sqlserver之间的区别,包括它们在默认设置、功能和用途上的差异。
|
3月前
|
SQL 数据挖掘 关系型数据库
|
3月前
|
SQL 数据挖掘 BI
【超实用技巧】解锁SQL聚合函数的奥秘:从基础COUNT到高级多表分析,带你轻松玩转数据统计与挖掘的全过程!
【8月更文挑战第31天】SQL聚合函数是进行数据统计分析的强大工具,可轻松计算平均值、求和及查找极值等。本文通过具体示例,展示如何利用这些函数对`sales`表进行统计分析,包括使用`COUNT()`、`SUM()`、`AVG()`、`MIN()`、`MAX()`等函数,并结合`GROUP BY`和`HAVING`子句实现更复杂的数据挖掘需求。通过这些实践,你将学会如何高效地应用SQL聚合函数解决实际问题。
49 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
57 0
|
6月前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
230 0
|
6月前
|
存储 开发框架 前端开发
C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码
医院云LIS系统是一套成熟的实验室信息管理系统,目前已在多家三级级医院应用,并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标,将医学检验、科室管理和财务统计等检验科室/实验室所有工作进行整合,全面改善检验科室/实验室的工作现状。
58 0
|
6月前
|
SQL
SQL Server2008 安装报错Restart computer failed的解决办法
SQL Server2008 安装报错Restart computer failed的解决办法
303 0
|
6月前
|
SQL 关系型数据库 数据处理
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
848 0