[精品]Oracle入门基础第二讲(2).doc

[精品]Oracle入门基础第二讲(2).doc

ID:51889550

大小:115.00 KB

页数:4页

时间:2020-03-18

[精品]Oracle入门基础第二讲(2).doc_第1页
[精品]Oracle入门基础第二讲(2).doc_第2页
[精品]Oracle入门基础第二讲(2).doc_第3页
[精品]Oracle入门基础第二讲(2).doc_第4页
资源描述:

《[精品]Oracle入门基础第二讲(2).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、组函数(GROUPFUNCTION)max/min/avg/sum/countcount(*)统计记录总数例:员工表屮有多少条记录?SQL>selectcount(*)fromemp;例:员工分布在多少个不同的部门,去掉重复值后统计SQL>selectcount(distinctdeptno)fromemp;例:入职吋间不是null的数据总数。SQL>selectcount(hiredate)fromemp;-avg/sum针对数字的操作-max/min对所有数据类型都可以操作例:对工资进行函数计算。SQL>selectavg(sal)fromemp;SQL>selec

2、tsum(sal)fromemp;SQL>selectmax(sal)fromemp;SQL>selectmin(sal)fromemp;下面这两个验证数据,没有什么意义。SQL>selectmax(hiredate)fromemp;SQL>selectmin(job)fromemp;练习:计算员工的人数总和、奖金总和、平均奖金是多少?错误的写法:SQL>selectcount(*)num,sum(comm)sum_comm,avg(comm)avg_commfromemp;大家会发现问题:没有考虑没有奖金的员工,简单计算公式:薪水平均值二薪水总和/人数总和avg(co

3、mm)=sum(comm)/countC*)而avg(comm)只按有薪水的员工人数计算平均值,这样得到的数据不够准确。SQL>selectsum(comm)/counl(*)fromemp;练习:还有一种计算平均奖金的写法,fflnvl来表示。SQL>selectavg(nvl(comm,0))fromemp;注意:组函数:count/avg/sum/max/min如果函数中写列名,默认忽略空值练习:计算最早和最晚的员工入职吋间SQL>selectmax(hiredate)late,min(hiredate)earlyfromemp;GROUPBY及HAVING子句求

4、薪水总和的方法:SQL>selectsum(sal)fromemp;我想按部门分组,计算每个部门员工的工资和:SQL>selectdeptno,sum(sal)fromempgroupbydeptno;例:计算每个职位的平均薪水。SQL>selectjob,avg(sal)fromemp;—报错:不是单组分组函数SQL>selectavg(sal)fromempgroupbyjob;注意:select后出现的歹!j,凡是没有被组函数包围的列,必须出现在groupby短语中;出现在groupby后面的列,不一定出现在select后面,但是信息不完整。结论:select后面

5、的非组函数的列和groupby后面列保持一致。例:计算每个部门的薪水总和和平均薪水?SQL>selectdeptno,sum(sal)sum_s,avg(nvl(sal,O))avg_sfromempgroupbydeptno;练习:按职位分组,每个职位的最高、最低薪水和人数?having子句注意区别where是对表中数据的过滤;having是对分组得到的结果数据进一步过滤。过滤分组结果select-from-where-gro叩by—having—orderby这是正常执行顺序,例:哪些部门的平均薪水大于2000。SQL>selectdeptno,avg(sal)fr

6、omempgroupbydeptnohavingavg(sal)>2000;注意:凡是对组函数过滤,使用having,非主函数用where«如果换成下而代码,就会报错。SQL>selectdeptno,avg(sal)fromempwhereavg(sal)>2000groupbydeptno;where->groupby->having的执行顺序。例:哪些职位的人数超过2个人?SQL>selectjob,count(*)fromempwherejobisnotnullgroupbyjobhavingcount(*)>2orderbycount(*);练习:计算哪个部门

7、的人数是超过5个人••用ordtrby进行排序,orckrby一定放在最后。课堂练习:1、找出每个月倒数第三天受雇的员工(如:2012-9-28)oSQL>select*fromempwherelast_day(hiredate)-2=hiredate;2、所有员工名字前加上Dear,并且首字母大写。SQL>select'Dear'IIinitcap(ename)fromemp;SQL>selectcancat(*Dearinitcap(ename))fromemp;3、算出每个职位的员工数和最低工资。SQL>selectjob,cou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。