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
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
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
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
-------
是<=a的记录数吧