常用语句

一、order by

 1 --先按英语成绩排序,再按数学成绩排序
 2 --默认不谢排序方式时是asc(升序)
 3 select * from Mystudentorder 
 4 order by FEnglish desc,FMath desc
 5 
 6 --查询学生的姓名,英语成绩,数学成绩,平均分
 7 select 
 8     fname 姓名
 9     fmath 数学成绩
10     fenglish 英语成绩
11     平均分=(fmath+fenglish) / 2.0
12 from Mystudent
13 order by (fmath+fenglish) / 2.0 desc --order by后面可以跟一个表达式
14 
15 select 
16     fname 姓名
17     fmath 数学成绩
18     fenglish 英语成绩
19     平均分=(fmath+fenglish) / 2.0
20 from Mystudent
21 order by 平均分 desc --order by 在语句最后执行

字符串排序先比较第一个字符,再比较第二个字符。

二、group by

 1 --统计出Mystudent 表中,男同学的个数与女同学的个数
 2 select 
 3     fgender as 性别    --当fgender出现了group语句中的时候,就可以与聚合函数一起使用
 4     COUNT(*) as 人数    --统计每一组的记录条数,先执行group by语句分组,分组以后再count(*)统计每一组的人数
 5 from Mystudent
 6 group by fgender    --分组以后,分出来几个组,那么count(*)就统计几次
 7 
 8 --统计班级的班级Id及该班的班级人数
 9 --所以按班级分组
10 select 
11     tsclassid as 班级Id,
12     COUNT(*) as 班级人数
13 from TblStudent
14 group by TSClassId
15 
16 统计班级的班级Id及该班的班级中男同学的人数
17 select 
18     tsclassid as 班级Id,
19     COUNT(*) as 班级人数
20 from TblStudent
21 where tsgender=''
22 group by TSClassId    --group by最后执行,把所有男同学统计出来之后再执行
23 
24 --一般分组语句group by都要与聚合函数配合使用,如果没有聚合函数,分组意义不大
25 --当在select查询语句中出现聚合函数是,这时不能再select查询语句中再出现其他列,除非该列也在group子句中出现或者在聚合函数中出现

 三、having

 1 --having 对组的筛选,哪些组显示,那些组不显示
 2 --1.统计每个班的人数
 3 select 
 4     tsclassId as 班级Id,
 5     COUNT(*) as 班级人数
 6 from TblStudent
 7 where tsgender=''
 8 group by tsclassId
 9 having COUNT(*) > 2
10 
11 select 
12     tsclassId as 班级Id,
13     COUNT(*) as 班级人数
14 from TblStudent
15 where tsgender=''
16 group by tsclassId
17 having 班级人数 > 2        --错 from->where->group by->having->select->order by
18 --当程序执行到having语句的时候,select 语句还没有被执行,所以这里还没有创建别名‘班级人数’。
19 --having语句后能跟什么列,主要看分组后的结果集中包含什么列
20 --having tsclassId in (1,2,4)    可以

 

posted on 2013-07-11 20:15  大钢  阅读(238)  评论(0编辑  收藏  举报

导航