码迷,mamicode.com
首页 > 其他好文 > 详细

over partition by与group by 的区别

时间:2018-04-04 21:03:39      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:需求   分组   color   ber   where   div   date   gpo   col   

  遇到这么一个需求,需要根据分类为数据库记录添加排序行,就像一个客户有多个订单,每个订单有若干产品,需要给每个订单的产品明细做一个默认排序。

  通过学习 PARTITION BY 解决了问题:

 update brands set orderindex=a.row1
 from 
 (
    select row_number() over(PARTITION BY cate.id order by cate.createdate) row1,cate.name,b2.name as bname,b2.customcategoryid,b2.id as brandid 
                            from brands b1 inner join customcategory cate on b1.id=cate.brandid
                                           inner join brands b2 on cate.id=b2.customcategoryid
    where b1.id=ab209c03-ecf7-49c2-af0f-62c66e82d412
 ) a
 where brands.id=a.brandid

  partition by与group by都是分组,究竟有何具体的区别呢?

  group by我们平时用的比较多,经常与聚合函数比如:Sum() Max() Min() Count() Avg()等一起使用。group by 就是对结果进行单纯分组计算, group by更强调的是一个整体,就是组,只能显示一个组里满足聚合函数的一条记录。

  partition by 在整体后更强调个体,能显示组里所有个体的记录。用于给结果集分组

over partition by与group by 的区别

标签:需求   分组   color   ber   where   div   date   gpo   col   

原文地址:https://www.cnblogs.com/chenxizhaolu/p/8718433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!