-
in 等于列表中的一个 any 和子查询返回的的任意一个值比较 all 和子查询返回的所有值比较查看全部
-
一般先执行子查询,再执行主查询;但相关子查询例外 相关子查询,外表必须起别名,传递给子查询 select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal from emp e where sal>(select avg(sal) from emp where deptno=e.deptno);查看全部
-
行号永远按照默认的顺序生成 行号只能使用<,<=;而不能使用>,>= 使用子查询变通 select * from (select * from emp order by sal desc) where rownum<=3查看全部
-
select * from emp where deptno=(select deptno from dept where dname='SALES'); 使用多表查询: select e.* from emp e,dept d where e.deptno=d.deptno and d.dname='SALES' ; 理论上应该尽量使用多表查询,因为上面的子查询有两个from语句,所以要对数据库访问查询两次,而下面的多表查询只访问了一次!这是理论上的结论,并没有考虑实际比如多表查询中产生的笛卡尔积的大小,具体情况还是要具体对待。查看全部
-
不可以使用子查询的位置:group by查看全部
-
where select having from 都可以使用子查询查看全部
-
子查询必须有小括号查看全部
-
自连接就是通过别名,将同一张表视为多张表查看全部
-
相同的部门号只显示一次,不同的部门号隔2行 break on deptno skip 2查看全部
-
group by 语句的增强 group by rollup(a.b)可以理解等价于: group by a,b + group by a + group by null查看全部
-
出现在select后面的字段,且没有在分组函数中的,必须要在group by子句中声明; where子句中不能使用组函数; having用于过滤分组后的数据,与where类似; 如果过滤条件中没有分组函数时,where与having通用,那么从sql优化的角度来讲,where的效率更高,因为having是先分组再过滤,而where是先过滤再分组。查看全部
-
--分组函数与空值 select sum(sal)/count(*),avg(sal) from emp; --注意:分组函数会自动忽略空值 --nvl函数使分组函数无法忽略空值 select count(*),count(nvl(comm,0)) from emp;查看全部
-
wm_concat(列名)行转列 select deptno 部门号,wm_concat(ename) 部门中员工的姓名 from emp group by deptno; 按照部门号分组,将相同部门号的员工以逗号分隔的形式展示到一行中查看全部
-
--平均 总和 select avg(sal),sum(sal) from emp; --最小和最大 select min(sal),max(sal) from emp; --总个数 select count(1) from emp; --求出部门数 select count(distinct deptno) from emp;查看全部
-
常用分组函数: avg:平均数 sum:求和 min:最小值 max:最大值 count:组中包含数据的个数 wm_concat:行转列查看全部
举报
0/150
提交
取消