数据库查询之(Ⅱ)统计、分组(排序)查询
2012-10-30 21:39
253 查看
(注释:以下举例的所有操作内容均根据下图)
统计查询:
统计函数:例1:求学号为S1的学生的总分和平均分
Select sum(score) as TotalSc ore,avg(score) as AveScore from sc where sno=s1
例2:求选修C1课程的最高分和最低分以及两者的差数
Select max(score) as MaxScore ,min(score) as MinScore,max(score)-min(score) as Diff from sc where cno=c1
例3:求学校共有多少个系
Select count(distinct dep) as DeptNum from s
(注释:distinct的作用是消去重复行)
例4:统计有成绩学生的人数
Select count(score) from sc
(注释:成绩为0的同学计算在内,没有成绩(即成绩为空)的不计算)
例5:利用特殊函数count(*)计算计算机系的学生总数
Select
count(*) from s where dept=”计算机”
(注释:count(*)用来统计元组的个数,不消除重复行,不允许使用distinct关键字(对比例3))
Group By 子句
将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同值。例:查询各个教师的教师号及其任课门数。
Select TNo,count(*) as C_Num from TC group by TNo
(注释:group by子句按照TNo的值分组,所有具有相同TNo的元组为一组,对每一组使用函数Count进行计算,统计出各位教师任课的门数)
如要在分组后还要按照一定条件进行筛选,就要使用Having子句
例:查询选修两门以上课程学生的学号和选课门数
Select sno, count(*) as sc_num from sc group by sno having (count(*)>=2)
(注释:group by子句按sno的值分组,所有具有相同sno的元组为一组。对每一组使用函数count(*)进行计算,统计出每位学生选课的门数。Having子句去掉不满足count(*)>=2的组。)(注意:where子句和having子句都是指明查询条件的语句,但两者面向的对象不同,where面向的对象是“表或视图等等”,而having子句面向的是“分组”)
Order By子句
当需要对查询结果排序时,应该使用Order By子句,该语句必须出现在其它子句之后,排序的方式可以为desc(降序)、asc(升序)。默认为升序
例1:查询选修课程号为c1的学生学号和成绩,并按成绩降序排列
Select sno, score from sc where (cno=c1) order by score desc
例2:查询选修c2、c3、c4或c5课程的学号、课程号和成绩,查询结果按学号升序排列学号相同再按成绩降序排列。
Select sno,cno,score from sc where (cno in(c2,c3,c4,c5)) order by sno,score desc
例3:求选课在3门以上且各门课程均及格的学生的学号及总成绩,结果按总成绩降序排列。
Select sno,sum(score)as TotalScore from sc where (score>=60) group by sno having(count(*)>=3) order by sum(score) desc
(注释:order by sum(score) desc可以换为
order by 2 desc。”2”代表查询结果的第二列)
相关文章推荐
- 操作数据库之查、增、删、改、统计、排序、混合查询、指定条数、不重复记录
- 数据库语句大全之排序/分组统计
- 数据库的查询排序、分组查询及筛选
- 数据库概论(实验四2) SQL查询(排序、集函数和分组子句的应用)
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- mysql排序查询,多条件排序查询,聚合函数的使用,分组统计查询,
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- 什么是数据库?数据库的作用想学数据库必看 (3)数据库操作 排序, 聚合函数 ,分组查询,分页查询,模糊查询,数据完整性
- 数据库原理之查询排序,分组和汇总(二)(第15天)
- 数据库分类统计、分组查询
- Mysql分组统计、排序、取前N条记录解决方案
- 大数据量实时统计排序分页查询(并发数较小时)的几点建议
- 一个sql例子,分组,查询,统计等操作,老忘记,记录一下
- 分组查询与排序
- SQL语言多表查询、分组统计、子查询、数据表的更新操作、事务处理
- girdview分组,统计,排序的解决方案
- sql笔记五:高级查询及通配符、排序分组
- 流量汇总(自定义jar包,在hadoop集群上 统计,排序,分组)之统计
- 08--MySQL自学教程:DQL(数据库查询)字段控制查询、聚合函数、分组查询、limit(二)
- SQL进行排序、分组、统计的10个新技巧