oracle实用知识(四)

----GROUP BY

该函数实现了分组,通常情况,当SELECT 语句后面有 表中数据 和 组函数 时,会用到分组,而且是用表中数据来分的组,

说的有点绕嘴,举个例子就明白了:

SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES 

GROUP BY  DEPARTMENT_ID; 

当看别人的语句时 只要记住GROUP BY 翻译成 “每个”  ,语句就好理解了。

有GROUP BY 时,语句的排序为:

SELECT        4

FROM            1

WHERE         2

GROUP BY   3

ORDER BY   5

----HAVING 

针对于上一个GROUP BY 而出现的函数,功能类似于WHERE ,但是WHERE不能出现在组函数中,也就是说,组函数中的条件不能由WHERE指定,

而是用 HAVING 指定的,仅限于关于组函数的限制条件。如果条件不是组函数的限制条件是,要放在where中,提高效率。

----当使用GROUP BY 或者 DISTINCT 时,ORDER  BY 中要排序的列必须在SELECT 中出现。

----组函数嵌套

1.组函数嵌套必须用 GROUP BY

2.组函数嵌套时,除了组函数嵌套列,不能出现其他列。

3.组函数嵌套只能直接出现在SELECT语句中。

----FROM 子查询

----伪表:创建表时,oracle自动为表添加的列。

----ROWID:保存数据的地址;

----ROWNUM:行号,查询时,只能从1开始查,否则返回0行数据。

例如: SELECT  LAST_NAME,SALARY 

FROM ( SECECT LAST_NAME,SALARY FROM EMPLOYEES  ORDER BY SALARY ASC ) 

WHERE ROWNUM<=5;

意思是查询工资最低的前五个人。

----成对子查询

查询每个部门收入最高的员工的last_name,department_id,salary

SELECT LAST_NAME,DEPARTMENT_ID,SALARY

FROM EMPLOYEES 

WHERE (DEPARTMENT_ID,SALARY) IN ( SELECT DEPARTMENT_ID,MAX( SALARY ) FROM EMPLOYEES GROUP BY DEPARTMENT_ID );  







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值