> 数据库 > SQL Server 2008 >

SqlServer--聚合函数

--聚合函数默认把整个表中的数据当做“一组”,然后才进行的统计。

select * from NewPerson

--统计出所有人的年龄的总和

select sum(age) as 年龄总和 from NewPerson

--统计当前表中一共有多少条记录

select count(*) from NewPerson

--计算平均年龄

select 平均年龄=(select sum(age) as 年龄总和 from NewPerson)*1.0/(select count(*) from NewPerson)

--计算年龄最大的

select max(age) from NewPerson

--年龄最小的

select min(age) from NewPerson

--计算平均值avg

select avg(age*1.0) from NewPerson

--聚合函数不统计空值,直接忽略,而不是将其作为“0”参与计算。

--GROUP BY的使用注意事项

1、分组列中若有NULL,这也将作为一组,且NULL值排在最前面

2、除汇总函数计算语句外,SELECT中的选择列必须出现在GROUP BY 中

3、GROUP BY 可以包含任意数目的列,可以嵌套



--2.如果使用聚合函数的时候,没有手动group by分组,那么聚合函数会把整个表中的数据作为一组来统计

--查询没有及格的学生(假设:数学或英语,只要有一门没有及格就叫做没有及格)的学号

select * from TblScore

select tsid from TblScore where tEnglish<60 or tMath<60

--查询年龄在20-30岁之间的男学生(包含)

select * from MyStudent

select * from MyStudent  where fage>=20 and fage<=30 and fgender='男'

--Between…and …   在...之间,(闭区间,包含两个端点值)

select * from MyStudent where fage between 20 and 30 and fgender='男'

select * from TblStudent

--查询出所有班级Id为3,4,5的那些学生

select *  from TblStudent where tsclassId=3 or tsclassId=4 or tsclassId=5

select *  from TblStudent where tsclassId in (3,4,5)

--19,1,27,86  

select *  from TblStudent where tsclassId in (19,1,27,86)

--对于in或者or 查询,如果查询中的条件是连续的几个数字,最好使用>=  <=或者between...and不要使用or或者in。提高效率

select *  from TblStudent where tsclassId >=3 and tsclassId<=5

(责任编辑:IT)