重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SQL SERVER中聚合函数主要有:
创新互联是专业的密山网站建设公司,密山接单;提供成都网站建设、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行密山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
(1)求员工总人数
(2)求最大值,求最高工资
(3)求最小时,求最小工资
(4)求和,求所有员工的工资总和
(5)求平均值,求所有员工的平均工资
ROUND函数用法:
(6)求数量,最大值,最小值,总和,平均值,在一行显示
(7)查询出武汉地区的员工人数,总工资,最高工资,最低工资和平均工资
(8)求出工资比平均工资高的人员信息
(9)求数量,年龄最大值,年龄最小值,年龄总和,年龄平均值,在一行显示
(10)计算出月薪在10000 以上的男性员工的最大年龄,最小年龄和平均年龄
(11)统计出所在地在“武汉或上海”的所有女员工数量以及最大年龄,最小年龄和平均年龄
(12)求出年龄比平均年龄高的人员信息
GETDATE() 返回当前的日期和时间
DATEPART() 返回日期/时间的单独部分
DATEADD() 返回日期中添加或减去指定的时间间隔
DATEDIFF() 返回两个日期直接的时间
DATENAME() 返回指定日期的指定日期部分的整数
CONVERT() 返回不同格式的时间
示例:
时间格式控制字符串:
sum函数 sum函数用于计算查询表中指定字段中所有 记录值的总和。 语法:sum(exp) 说明:该函数不计算包含Null 值的字段。
例:SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的 population字段上,结果就是该查询只返回 一个结果,即所有国家的总人口数。
newid 无参数
返回一个GUID(全局唯一表示符)值
例如:select newid()
返回:2E6861EF-F4DB-4FFE-86EB-637482FE982J2
isnumeric (任意表达式)
判断表达式是否为数值类型或者是否可以转换成数值。
是:返回1,不是:返回0
例如:select isnumeric(1111) 返回 1
select isnumeric('123rr') 返回 0
select isnumeric('123') 返回 1
isnull (任意表达式1,任意表达式2)
如果任意表达式1不为NULL,则返回它的值;否则,在将任意表达式2的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表达式2的值。
例如:select isnull(null,N'没有值') 返回 没有值
select isnull(N'具体的值',N'没有值') 返回 具体的值
isdate (任意表达式)
确定输入表达式是否为有效日期或可转成有效的日期;
是:返回1,不是:返回0
例如:select isdate(getdate()) 返回1
select isdate('2013-01-02') 返回1
select isdate('198') 返回0
Sql Server自定义聚合函数详细步骤
开始-
输出-
首先用VS2008/VS2005建立一个SQL Server项目,右键解决方案添加新项
点击“确定”按钮后,SQL Server项目会要求连接一个数据库,我们可以选择一个数据库
然后在工程中加入一个聚合类(joinstr.cs),如图
joinstr.cs中的最终代码如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text;
[Serializable]
[SqlUserDefinedAggregate(
Format.UserDefined, //use custom serialization to serialize the intermediate result
IsInvariantToNulls = true, //optimizer property
IsInvariantToDuplicates = false, //optimizer property
IsInvariantToOrder = false, //optimizer property
MaxByteSize = 8000), //maximum size in bytes of persisted value
]
public struct JoinStr:IBinarySerialize
{
private StringBuilder sbIntermediate;
public void Init()
{
sbIntermediate = new StringBuilder();
}
public void Accumulate(SqlString Value)
{
if (Value == null || Value.ToString().ToLower().Equals("null"))
{
return;
}
else
{
sbIntermediate.Append(Value);
}
}
public void Merge(JionStr Group)
{
sbIntermediate.Append(Group.sbIntermediate);
}
public SqlString Terminate()
{
return new SqlString(sbIntermediate.ToString());
}
// This is a place-holder member field
#region IBinarySerialize Members
public void Read(System.IO.BinaryReader r)
{
sbIntermediate = new StringBuilder(r.ReadString());
}
public void Write(System.IO.BinaryWriter w)
{
w.Write(this.sbIntermediate.ToString());
}
#endregion
}
在编写完上述代码后,可以使用Visual Studio来部署(右向工程,在弹出菜单上选“部署”即可)。
在执行上面的SQL语句之前,需要将SQL Server2005的clr功能打开
现在可以使用joinstr来聚合字符串了。
select [t_code_role].[role_mc] as '角色',dbo.JoinStr([t_code_right].[right_mc]+',') as '权限' from [t_data_roleright],[t_code_right],[t_code_role] where [t_data_roleright].[role_bm]=[t_code_role].[role_bm] and [t_data_roleright].[right_bm]=[t_code_right].[right_bm] group by [t_code_role].[role_mc]
创建自定义函数:
use 数据库名
go
create function 函数名
(@pno int)
returns int
as
begin
declare @a int
if not exists(select * from person where pno=@pno)
set @a=-1
else
set @a=1
return @a
end
调用函数:
use 数据库名
go
select dbo.函数名(13250)
1、CONVERT()
函数
?
1
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length)
规定目标数据类型(带有可选的长度)。data_to_be_converted
含有需要转换的值。style
规定日期/时间的输出格式。
可以使用的
style
值:点击打开链接
2、DATEADD()
函数
点击打开链接
3、CAST()
函数
?
1
2
Syntax
for
CAST:
CAST
(
expression
AS
data_type
[
(
length
)
]
)
expression
任何有效的表达式。
data_type
目标数据类型。
这包括
xml、bigint
和
sql_variant。
不能使用别名数据类型。
length
指定目标数据类型长度的可选整数。
默认值为
30。
CONVERT()
函数与CAST()
函数详细信息:点击打开链接