-
对于多行子查询可以使用in,any,all来操作。
查看全部 -
any代表的是子查询中的某一个,也就是满足一个成立就可以了,all代表的是子查询的所以,也就是对于所有的都要满足才行。具体是最大值还是最小值要额外分析。
查看全部 -
where后的条件如果有or的话一定要记得加(),不然会导致先执行and再执行or导致or的对象不是原本想要的运算的对象。
查看全部 -
where后的条件如果有or的话一定要记得加(),不然会导致先执行and再执行or导致or的对象不是原本想要的运算的对象。
查看全部 -
行号永远按照默认的顺序排序的,因为是先查出数据,查出数据的瞬间就会添加行号这个伪劣了,如果有order或group才会继续执行,order一般是最后执行的,所以如果where rownuum<3 order by column是先选出3行在order,而不是order后再拿出三行,所以如果要top-N的问题的话是要使用子查询先排序在选出rownum<3或者使用row_num再选出前3的数据。
查看全部 -
group by后面不能使用子查询。
查看全部 -
不可以在group by子句后面使用子查询。
查看全部 -
自连接至少需要数据数目的平方,所以自连接不适合大表的数据,大表的自连接可以使用层次查询来实现。
查看全部 -
分层查询使用connect by prior empno=mgr start with mgr is null/start with empno=7658;分层查询有一个伪劣是level,代表着分层查询时的层次,从第一层开始算。
查看全部 -
对于between来说小值必须在左边,大值必须在右边。
查看全部 -
select max(avg(sal)) from emp group by deptno;这里使用了两个分组函数嵌套起来,如果是前面加了个deptno就会报错。
查看全部 -
orderby可以根据列,别名,表达式,序号进行排序。
查看全部 -
having和where在没有分组函数的时候是可以通用的,但是having可以使用分组,但是where不能使用分组。没有分组的时候应该优先使用where,因为where的效率更高,where是先筛选数据再进行分组运算,而having是先分组运算在筛选数据,所以分组运算的数据更多,where分组运算的数据更少。
查看全部 -
重点纠错,不是where和having不能共存,而是where中不能使用组函数,可以在having字句中使用组函数。
查看全部 -
分组函数会自己过滤掉控制,所以count的话是计算出不包含空的数目,所以要统计的时候可以使用*或者是唯一性列,计算平均值的时候如果有空值也要用nvl或者使用sum和count来计算,因为avg也是会忽略掉空值的。
查看全部
举报