1、聚合函数

- 使用聚合函数作为select的选择列时,若不为其指定列标题,则系统将对该列输出标题‘(无列名)’
为聚合函数指定列标题举例:有课程表XS_KC(学号、课程号、成绩),求选修101课程号的学生的平均成绩
查询语句如下:select Avg(成绩) as ‘课程号101的平均成绩’
from XS_KC
where 课程号='101'
- 常用聚合函数的语法格式:
Sum/Avg([All | Distinct] 表达式)
Count({[All | Distinct] 表达式} | *), Count(*)将统计总行数,不需要任何参数
2、Group by子句
- group by子句用于对表或视图中的数据按字段分组。格式为:
Group by group_by_expression [with {rollup | cube}]
- 使用Group by子句后,select子句中的列表中,只能包含在group by中指定的列或聚合函数中指定的列。
- 使用带Rollup操作符的Group by子句:指定在结果集内不仅包含由Group by提供的正常行,还包含汇总行。
- 使用rollup操作符后,将对group by子句中所指定的各列产生汇总行,产生的规则是:按列的排列的逆序依次进行汇总。所产生的汇总行中对应具有不同列值的字段值将置为Null。
- 使用group by子句注意事项:
- 在select子句的字段列表中,除了聚合函数外,其他所出现的字段一定要在group by子句中有定义才行。
例如:"group by a,b",那么“select sum(a),c”就有问题,因为c不在group by中,但是sum(a)是可以的。
2. select子句的字段列表中不一定要有聚集函数,但至少要用到group by子句列表中的一个项目。
例如:"group by a,b,c",则“select a“是可以的。
3. 在sql server中text、ntext和image数据类型的字段不能作为group by子句的分组依据。
4. group by子句不能使用字段别名。
3、Having子句
- 对分组数据进一步筛选。格式为:
Having search_condition ,其中search_condition为查询条件,与where子句的查询条件类似,并且可以使用聚合函数。
- 在select语句中,当where、group by与having子句均被使用时,要注意它们的作用和执行顺序:where用于筛选由from指定的数据对象;group by用于对where的结果进行分组;having则是对group by以后的分组数据进行过滤。
4、排序
- 在select语句中,使用order by子句对查询结果进行排序。格式为:
Order by 排序表达式 [Asc|Desc],其中Asc表示升序,Desc表示降序,系统默认为Asc。
- order by子句可以与compute by子句一起使用,在对结果排序的同时还产生附加的汇总行。
浙公网安备 33010602011771号