oracle分析函数over partition by 和group by的区别

 我来答
节子不哭
2017-08-02 · TA获得超过461个赞
知道小有建树答主
回答量:340
采纳率:85%
帮助的人:165万
展开全部

普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值。

分析函数的形式:分析函数带有一个开窗函数over(),包含三个分析子句:分组(partition by), 排序(order by), 窗口(rows) 。

使用形式如下:over(partition by xxx order by yyy rows between zzz)。

案例:

案例1:显示各部门员工的工资,并附带显示该部门的最高工资。
SELECT E.Department_Id,
       E.Employee_Id,
       E.Last_Name,
       E.Salary,
       LAST_VALUE(E.Salary) OVER(PARTITION BY E.Department_Id ORDER BY E.Salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SAL
  FROM employees E;
--unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是按Department_Id分组之后的,所有该小组的记录
--unbounded:不受控制的,无限的
--preceding:在...之前,
--following:在...之后
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式