SQL';按'顺序划分;将count()转换为rank()?

SQL';按'顺序划分;将count()转换为rank()?,sql,Sql,我正在试图弄清楚如何正确地使用分区by,并寻找对以下结果的简要解释。(很抱歉,包含的测试数据没有正确的SQL代码。) 示例1:统计每个公司的ID(例如股东),并将其添加到原始数据帧中(作为“newvar”) 示例2:当我现在添加orderbysharescount()时,不知何故似乎变成了rank(),因此输出仅仅是一个排名变量 select ID, company, count(ID) over(partition by company order by shares) as newvar

我正在试图弄清楚如何正确地使用
分区by
,并寻找对以下结果的简要解释。(很抱歉,包含的测试数据没有正确的SQL代码。)

示例1:统计每个公司的ID(例如股东),并将其添加到原始数据帧中(作为“newvar”)

示例2:当我现在添加
orderbyshares
count()时,不知何故似乎变成了rank(),因此输出仅仅是一个排名变量

select ID, company, 
count(ID) over(partition by company order by shares) as newvar
from testdata;
我认为order by只是对数据进行排序,但它似乎对“newvar”有影响

对此有一个简单的解释吗

非常感谢

包含测试数据的.csv文件:

ID;company;shares
1;a;10
2;a;20
3;a;70
1;b;50
4;b;10
5;b;10
6;b;30
2;c;80
3;c;10
7;c;10
1;d;20
2;d;30
3;d;25
6;d;10
7;d;15
count()
使用
订单编号进行累计计数。它将把该值转换为
rank()
行数()
,具体取决于
共享
值中的关系以及数据库如何处理缺少的窗口帧(
行在
之间或
范围在
之间)

如果只想对数据进行排序,则
orderby
应位于
from
子句之后:

select ID, company, 
       count(ID) over(partition by company) as newvar
from testdata
order by shares;
select ID, company, 
       count(ID) over(partition by company) as newvar
from testdata
order by shares;