SQL扩展之T-SQL中的数据查询语言之统计计算
来源:互联网 发布:南宁哪里有mac专柜 编辑:程序博客网 时间:2024/05/24 04:17
对于检索数据常常需要进行统计或计算,我们可以使用聚合函数进行统计或者计算。
1,聚合函数
聚合函数实现数据统计或计算,用于计算表中的数据,返回单个计算结果。除COUNT函数外,聚合函数忽略空值。 SQL Server 2008所提供常用的聚合函数:
语法格式:
( [ ALL | DISTINCT ] expression )其中,ALL表示对所有值进行聚合函数运算,ALL为默认值,DISTINCT表示去除重复值,expression指定进行聚合函数运算的表达式。
举例,查询102课程的最高分、最低分、平均成绩:
USE stsc SELECT MAX(grade) AS '最高分',MIN(grade) AS '最低分',AVG(grade) AS '平均成绩' FROM score WHERE cno='102‘例如,求得学生总人数:
USE stsc SELECT COUNT(*) AS '总人数' FROM student例如,查询计算机专业学生的总人数:
USE stsc SELECT COUNT(*) AS '总人数' FROM student WHERE specialist='计算机2,GROUP BY
GROUP BY子句用于将查询结果表按某一列或多列值进行分组,其语法格式为如下:
[ GROUP BY [ ALL ] group_by_expression [,…n] [ WITH { CUBE | ROLLUP } ] ]其中,group_by_expression为分组表达式,通常包含字段名,ALL显示所有分组,WITH指定CUBE或ROLLUP操作符,在查询结果中增加汇总记录。
例如,查询各门课程的最高分、最低分、平均成绩:
USE stscSELECT cno AS '课程号', MAX(grade)AS '最高分',MIN (grade)AS '最低分', AVG(grade)AS '平均成绩'FROM scoreWHERE NOT grade IS nullGROUP BY cno例如,求选修各门课程的平均成绩和选修人数:
USE stsc SELECT cno AS '课程号', AVG(grade) AS '平均成绩', COUNT(*) AS '选修人数' FROM score GROUP BY cno3,HAVING 子句
HAVING子句用于对分组按指定条件进一步进行筛选,最后只输出满足指定条件的分组, HAVING子句的格式为:
[ HAVING <search_condition> ]其中,search_condition为查询条件,可以使用聚合函数。
当WHERE子句、GROUP BY子句、HAVING子句在一个SELECT语句中时,执行顺序如下:
(1)执行WHERE子句,在表中选择行。
(2)执行GROUP BY子句,对选取行进行分组。
(3)执行聚合函数。
(4)执行HAVING子句,筛选满足条件的分组。
例如,查询选修课程2门以上且成绩在80分以上的学生的学号:
USE stscSELECT stno AS '学号', COUNT(cno) AS '选修课程数'FROM scoreWHERE grade>=80GROUP BY stnoHAVING COUNT(*)>=2例如,查询至少有4名学生选修且以8开头的课程号和平均分数:
USE stscSELECT cno AS '课程号', AVG (grade) AS '平均分数'FROM scoreWHERE cno LIKE '8%'GROUP BY cnoHAVING COUNT(*)>44,排序查询
SELECT语句的ORDER BY子句用于对查询结果按升序(默认或ASC)或降序(DESC)排列行,可按照一个或多个字段的值进行排序,ORDER BY子句的格式如下:
[ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,…n ]其中,order_by_expression是排序表达式,可以是列名、表达式或一个正整数。
例如,将计算机专业的学生按出生时间先后排序:
USE stsc SELECT * ROM student WHERE specialist='计算机' ORDER BY stbirthday例如,将通信专业学生按“数字电路”课程成绩降序排序:
USE stsc SELECT a.stname, b.cname, c.grade FROM student a, course b, score c WHERE a.stno=c.stno AND b.cno=c.cno AND b.cname='数字电路' AND a.specialist='通信'ORDER BY c.grade DESC
0 0
- SQL扩展之T-SQL中的数据查询语言之统计计算
- SQL扩展之T-SQL中的数据查询语言之投影查询篇
- SQL扩展之T-SQL中的数据查询语言之选择查询篇
- SQL扩展之T-SQL中的数据查询语言之连接查询
- SQL扩展之T-SQL中的数据定义语言
- SQL扩展之T-SQL中的数据操纵语言
- SQL扩展之T-SQL中的数据定义语言(续)
- T-SQL 之插入数据
- 经典SQL之数据统计
- T-SQL:数据查询
- T-Sql数据查询
- T-SQL 查询优化之联接顺序
- T-SQL 查询优化之扫描搜寻
- T-SQL 查询优化之聚合
- 数据库查询语言SQL以及扩展T-SQL、PL/SQL等
- SQL SERVER之数据查询
- SQL基础之数据查询
- T-SQL操作语句之数据查询(二):查询中使用函数
- mysql 创建event报1064
- 浏览器的云加速可能导致IP统计异常
- 归档/反归档
- 一些关于Java常用关键字的理解
- C、C++、JAVA比较
- SQL扩展之T-SQL中的数据查询语言之统计计算
- 银行卡发卡行标识代码及卡号
- Android学习实践:6.应用主题和布局
- 点击事件中获取点击的坐标
- 对于普通异常的处理
- JAVA编程基础(二)
- POJ 2352(顺路讲解一下树状数组)
- Hibernate各种主键生成策略与配置详解
- mysql 基于时间点恢复