COUNT(*)over() 是计算所有记录条数,和COUNT(*)over(ORDER BY COL)差不多,唯一区别就是后者经过排序了,partition by col是按col分组,计算每组的count(*)
select a,COUNT(*)over() from t
a     COUNT(*)over()
1       5
7       5
2       5
2       5
5       5
select a,COUNT(*)over(ORDER BY a) from t
a     COUNT(*)over(ORDER BY a)
1       5
2       5
2       5
5       5
7       5select a,COUNT(*)over(partition BY a) from t
a     COUNT(*)over()
1       1
2       2
2       2
5       1
7       1

解决方案 »

  1.   

    错了,不好意思,COUNT(*)over(ORDER BY a)应该是按a的顺序累计条数
    select a,COUNT(*)over(ORDER BY a) from t
    a     COUNT(*)over(ORDER BY a)
    1       1
    2       3
    2       3
    5       4
    7       5
      

  2.   

    select a,b,COUNT(*)over(partition by a ORDER BY b) from b 
    a     b    COUNT(*)over(partition by a ORDER BY b) 
    1     1      1
    2     2      1
    2     3      2
    3     1      1
    4     1      1
    4     2      3 
    4     2      3
    5     1      1
      

  3.   

    COUNT(*)over(ORDER BY a)应该是按a的顺序累计条数,是不是指累计的是>=a的记录数?
      

  4.   

    COUNT(*)over(ORDER BY a)应该是按a的顺序累计条数,是不是指累计的是>=a的记录数?
    -------
    是<=a的记录数吧