前言
在SQL server中不仅可以可以使用系统自带的函数(时间函数、聚合函数、字符串函数等等),还可以根据需要自定义函数。
一.聚合函数
聚合函数执行一个或多个值的计算并返回单个值。 聚合函数通常与SELECT语句的GROUP BY子句和HAVING子句一起使用。
1.SQL Server常用的聚合函数
编号 | 聚合函数 | 描述 |
---|---|---|
1 | MAX()函数 | MAX()函数返回集合中非NULL值中的最大值。 |
2 | MIN()函数 | MIN()函数返回集合中非NULL值中的最小值。 |
3 | AVG()函数 | AVG()函数用于计算集合中非NULL值的平均值。 |
4 | COUNT()函数 | COUNT()函数返回集合中的行数,包括具有NULL值的行。 |
5 | SUM()函数 | SUM()函数返回集合中所有非NULL值的总和。 |
6 | STDEV()函数 | STDEV()函数返回所提供表达式的所有值的统计标准偏差,但基于数据总体的样本。 |
7 | VAR()函数 | VAR()函数根据指定总体的样本,返回表达式中值的统计方差。 |
2.SQL Server聚合函数语法
以下是聚合函数的语法:
aggregate_function_name(DISTINCT | ALL expression)
在这个语法中;
首先,指定要使用的聚合函数的名称,例如:AVG,SUM和MAX。
其次,如果只想在计算中考虑不同的值,则使用DISTINCT;如果在计算中考虑所有值,则使用ALL。 默认情况下,如果未指定任何修饰符,则使用ALL。
第三,expression可以是表的列,也可以是由具有算术运算符的多个列组成的表达式。
二.自定义函数
1.定义
用户自定义函数的类型:
1、标量值函数(返回一个标量值)
2、表格值函数(内联表格值函数、多语句表值函数,返回一个结果集即返回多个值)
2.基本原理
用户自定义函数 是一个例程,它接受参数、执行操作并返回该操作的结果。根据定义,结果可以是标量值(单个)或表。
a.优点
- 可以把复杂的逻辑嵌入到查询中。
- 可以为复杂的表达式创建新函数。
- 可以运用在一个表达式或 SELECT 语句的 FROM 子句中,并且还可以绑定到架构。
b.缺陷
该函数一旦误用会产生潜在的性能问题。必须针对WHERE子句的每一行执行的任何函数,不管是用户定义的函数还是系统函数,都将减慢执行速度。
3.举例说明
–自定义函数–创建函数
go
create function convert_sex
(
@sex bit
)
returns varchar(4)--返回的数据类型
as
begin
declare @rsex varchar(4)
if(@sex=1)
select @rsex='男'
else
select @rsex='女'
return @rsex
end
--调用方法
select *,dbo.convert_sex(Sex) from Customers
1显示为男生,2显示为女生