数据库查询之(Ⅱ)统计、分组(排序)查询

(注释:以下举例的所有操作内容均根据下图)

统计查询:

统计函数:

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:查询选修c2c3c4c5课程的学号、课程号和成绩,查询结果按学号升序排列学号相同再按成绩降序排列。

         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”代表查询结果的第二列)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值