Oracle笔记多表查询(2)

本文通过一个具体的SQL查询案例介绍了如何使用多字段进行分组,并解释了分组操作的前提条件。通过联接dept和emp两个表,统计每个部门的编号、名称、位置、人数及平均工资。
范例:要求显示每个部门的编号、名称、位置、部门的人数、平均工资


1、确定所需要的数据表:


dept表:每个部门的名称;
emp表:统计出部门的人数、平均工资;
2、确定已知的关联字段:emp.deptno=dept.deptno;


范例:将emp表和dept表关联查询


SELECT d.deptno,d.dname,d.loc,e.empno,e.sal
FROM dept d,emp e
WHERE d.deptno=e.deptno(+);
复制代码


DEPTNO DNAME LOC EMPNO SAL
---------- -------------- ------------- ---------- ----------
 10 ACCOUNTING NEW YORK 7782 2450
 10 ACCOUNTING NEW YORK 7839 5000
 10 ACCOUNTING NEW YORK 7934 1300
 20 RESEARCH DALLAS 7369 800
 20 RESEARCH DALLAS 7876 1100
 20 RESEARCH DALLAS 7902 3000
 20 RESEARCH DALLAS 7788 3000
 20 RESEARCH DALLAS 7566 2975
 30 SALES CHICAGO 7499 1600
 30 SALES CHICAGO 7698 2850
 30 SALES CHICAGO 7654 1250
 30 SALES CHICAGO 7900 950
 30 SALES CHICAGO 7844 1500
 30 SALES CHICAGO 7521 1250
 40 OPERATIONS BOSTON
已选择15行。


此时存在了重复数据,而且这个重复的数据平均在了三列上(deptno,dname,loc),所以在分组上的GROUP BY子句中就


可以写上三个字段:


SELECT d.deptno,d.dname,d.loc,COUNT(e.empno),NVL(AVG(e.sal),0)
FROM dept d,emp e
WHERE d.deptno=e.deptno(+)
GROUP BY d.deptno,d.dname,d.loc;

以上就是多字段分组,但是不管是单字段还是多字段,一定要有一个前提,存在了重复数据。


全文:http://bbs.landingbj.com/t-0-243782-1.html
其他参考链接如下:http://bbs.landingbj.com
-The End-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值