oracle SQL比较易混淆的问题(GROUP BY,HAVING,连接操作符)

左外连接(LEFT JOIN) 返回左边表的所有行

  • 以左边表为准,左边表的所有字段+右边表
SELECT
	e.empno,
	e.ename,
	e.job,
	e.mgr,
	e.hiredate,
	e.sal,
	e.comm,
	d.dname 
FROM
	scott.emp e
	LEFT JOIN scott.DEPT d ON e.DEPTNO = d.DEPTNO;

去重

select distinct(ENAME) from emp;

GROUP BY
注意事项

  • 需要查询的字段,必须与group by 相同
  select  d.dname , max(e.sar),min(e.sar),avg(e.sar)
    from dept d,emp e
    where d.did=e.did
    group by  d.dname;

HAVING子句
查询每个部门的最高工资、最低工资和平均工资,只保留平均工资小于5000的部门

select d.dname,max(e.sar),min(e.sar),avg(e.sar)
from dept d,emp e
where d.did=e.did
group by d.dname
having avg(e.sar)<5000;

UNION 合并,去除重复(加all表示不去除重复)

SELECT EMPNO, ename, sal FROM emp WHERE sal>2000 
UNION 
SELECT EMPNO, ename, sal FROM emp WHERE DEPTNO=10

INTERSECT 取交集

SELECT EMPNO, ename, sal FROM emp WHERE sal>2000 
INTERSECT 
SELECT EMPNO, ename, sal FROM emp WHERE DEPTNO=10

MINUS 从第一个结果集中减去相同的行

SELECT EMPNO, ename, sal FROM emp WHERE sal>2000 
MINUS
SELECT EMPNO, ename, sal FROM emp WHERE DEPTNO=10 ;

连接操作符

连接操作符用于将多个字符串或数据值合并成一个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值