Oracle之数据操作 |
您所在的位置:网站首页 › 分组查询统计总数 › Oracle之数据操作 |
一. 统计函数
1. COUNT(*),COUNT(字段),COUNT(DISTNCT 字段) SELECT COUNT(*),COUNT(ename),COUNT(comm),COUNT(DISTINCT job) FROM emp;
2. SELECT * FROM bonus; SELECT count(*) FROM bonus; SELECT count(ename),avg(sal),sum(sal),max(sal),min(sal) FROM bonus;
二. 单字段分组统计
1. 统计每种职位的最低工资和最高工资 SELECT job,MIN(sal),MAX(sal) FROM EMP GROUP BY job;
2. 分组注意事项
3. 查询每个部门的名称,部门人数,部门平均工资,平均服务年限 ![]() ![]() ### 子句顺序:FROM, WHERE, GROUP BY, SELECT, ORDER BY
4. 查询出公司各个工资等级雇员的数量,平均工资 4.1 首先: SELECT s.grade,e.empno,e.sal FROM salgrade s,emp e WHERE e.sal BETWEEN s.losal AND s.hisal;
4.2 最后结果: SELECT s.grade,count(e.empno),round(avg(e.sal),2) FROM salgrade s,emp e WHERE e.sal BETWEEN s.losal AND s.hisal GROUP BY s.grade;
5. 统计出领取佣金与不领取佣金的雇员的 平均工资,平均雇佣年限,雇员人数 SELECT '不领取佣金',round(avg(sal),2) avgsal, round(avg(months_between(sysdate,hiredate)/12),2) avgyear, count(empno) 人数 FROM emp WHERE comm IS NOT NULL UNION SELECT '领取佣金',ROUND(avg(sal),2) avgsal, round(avg(months_between(sysdate,hiredate)/12),2) avgyear, count(empno) 人数 FROM emp WHERE comm IS NULL
三. 多字段分组统计
1. 要求查询出每个部门的详细信息 SELECT d.did,d.dname,d.loc, NVL(count(e.empno),0) count,NVL(round(avg(sal),2),0) avg, NVL(sum(sal),0) sum,NVL(max(sal),0) max,NVL(min(sal),0) min FROM emp e,dept d WHERE e.did(+)=d.did GROUP BY d.did,d.dname,d.loc ORDER BY d.did ;
四. HAVING子句 A. HAVING子句的使用 ### HAVING子句一定要与GROUP BY子句使用
1. 查询出所有平均工资大于1000的职位信息,平均工资,雇员人数 ![]() ![]() ##完整的子句语法:FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY
2. 列出至少有一个员工的所有部门编号,名称,并统计出这些部门的员工的平均工资,最低工资,最高工资,最后按照部门id,升序排列。 ![]() ![]()
B. HAVING与WHERE子句的区别 语句执行流程:
HAVING与WHERE子句的区别描述: # WHERE:是在分组之前使用(可以没有GROUP BY),不允许使用统计函数 # HAVING:是在分组之后(必须结合 GROUP BY),允许使用统计函数
1. 显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于$2000输出结果按月工资的合计降序排列 ![]() ![]()
#问题 1. ORA-02270: 此列列表的唯一关键字或主键不匹配 1. 可能是字段类型不匹配,请先仔细检查,确定无误。 2. 外键关联的必须是主键!!!
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |