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子句注意事项:
  1. 在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子句一起使用,在对结果排序的同时还产生附加的汇总行

      

posted on 2012-10-18 14:10  @雨欣@  阅读(203)  评论(0)    收藏  举报