oracle几个常用的函数sum(),avg(),min(),count()
Sum()求和函数。?
Avg()求平均值函数。?
Max()求最大值函数。?
Min()求最小值函数。?
Count()汇总函数。?
例1.求所有员工的年龄总和。?
Select sum(年龄)?from?表名?
?
例2.求女同志的平均年龄。?
select avg(年龄) from表名?where?性别='女'?
?
例3.求所用员工的平均工资。?
平均工资=工资总和/人数?
Select sum(工资)/count(*)from?表名?
*可以用工资代替。?
?
例4.求工资最小值。?
Select min(工资)from表名?
?
例5.求工资最少的员工信息。?
Select * from?表名?where?工资=(select min(工资)?from?表名)?
?
例6.求每个部门的平均工资。?
分组:group by?
Select?部门,avg(工资)from?表名?group by?部门?
?
例7.求男女员工的人数。?
Select?性别,count(*)from?表名?group by?性别?
?
例8.求每个部门的平均工资。?
Select?部门,avg(工资)as?部门平均工资?from?表名?group by?部门?
?
例9.显示部门平均工资在4000元以上的部门名称。?
Select?部门,avg(工资)as?部门平均工资?from?表名?
Group by?部门?where avg(工资)>4000—这条命令错误。?
--是表示注释。?
在SQL中规定:对group by?的结果进行过滤时不允许使用where,只能是having?
如:Select?部门,avg(工资)as?部门平均工资?from表名?Group by?部门?having avg(工资)>4000?
?
例10.在校期间参加三次考试,规定连接三次都在90分以上,为优秀生。请找出所有优秀生。?
在这个实验需创建一个表,先创建表stu?
?
语法为:select?姓名?from?表名?成绩>=90 group by?姓名?having count(*)=3.?
?
联合:union:创建表nan和表nv.?
?
Select * from?表1 union select * from?表2?
注意:?
1.?????每个select?语句字段名必须一致。?
2.?????如果字段名不同,则以第一个select语句为准。?
Select * from nan union select,姓名,性别,年龄?from??nv?
重复记录值显示一条。?
?
例1.???????统计nan,nv以及yuangong表中男女同志的人数。?
语法为:select?性别,count(*) from??(select * from nan union select * from nv union?select?姓名,性别,年龄?from yuangong)as ls group by?性别。?
?
例2.对三个表的年龄按照升序进行排列。?
select * from (select * from nan union??select * from nv union??select?姓名,性别,?年龄from yuangong)??as age order by??年龄?asc?
?
自连接:一个表的自我连接?。?
创建一个表home,类型的、找出父子对应关系?
?
语法为:select homea.姓名?as?儿子,homeb.姓名?as?父亲?from?
home as homea,home as homeb where homea.父id=homeb.id?
?
例3.显示出工资高于本部门平均工资的员工信息。?
创建一个类型为p的表。?
?
语法为:select * from p?,(select?部门,avg(工资)?as?平均工资?from p group by?部门)as ls where?工资>平均工资?and p.部门=ls.部门?