zoukankan      html  css  js  c++  java
  • PARTITION BY 和 group by

    sum()   over   (PARTITION   BY   ...)   是一个分析函数。   他执行的效果跟普通的sum   ...group   by   ...不一样,它计算组中表达式的累积和,而不是简单的和。   
        
    表a,内容如下:   
    B C D   
    02 02 1   
    02 03 2   
    02 04 3   
    02 05 4   
    02 01 5   
    02 06 6   
    02 07 7   
    02 03 5   
    02 02 12   
    02 01 2   
    02 01 23   
        
    select   b,c,sum(d)   e   from   a   group   by   b,c   
    得到:   
    B C E   
    02 01 30   
    02 02 13   
    02 03 7   
    02 04 3   
    02 05 4   
    02 06 6   
    02 07 7   
        
    而使用分析函数得到的结果是:   
    SELECT   b,   c,   d,   SUM(d)   OVER(PARTITION   BY   b,c   ORDER   BY   d)   e   FROM   a   
    B C E   
    02 01 2   
    02 01 7   
    02 01 30   
    02 02 1   
    02 02 13   
    02 03 2   
    02 03 7   
    02 04 3   
    02 05 4   
    02 06 6   
    02 07 7   
    结果不一样,这样看还不是很清楚,我们把d的内容也显示出来就更清楚了:   
    SELECT   b,   c,   d,SUM(d)   OVER(PARTITION   BY   b,c   ORDER   BY   d)   e   FROM   a   
    B C D E   
    02 01 2 2                     d=2,sum(d)=2   
    02 01 5 7                     d=5,sum(d)=7   
    02 01 23 30                   d=23,sum(d)=30   
    02 02 1 1                     c值不同,重新累计   
    02 02 12 13   
    02 03 2 2   
    02 03 5 7   
    02 04 3 3   
    02 05 4 4   
    02 06 6 6   
    02 07 7 7

    但 我们可以利用partition by 找到一个表中 不同分组中最大和最小的一个值

    select a.* from

      select row_number() over(partition by nId order by a.inMemberCount asc) nRow,aa,bb from TableA

    )  a 

    where nRow=1

  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/ghelement/p/4600169.html
Copyright © 2011-2022 走看看