开窗函数包括over(partition by 列名1) 这是对列名1进行分组统计,over前可以加上count/sum等聚合函数。

sum(salary) over(partition by id,mac_id order by id)呈现的结果是:对于这两列进行分组,对salary这一列求和,结果按id进行排序,每一个分组里的sum(salary)都是同一个数值,而不是累加。
sum(salary) over(order by 列名1)是对列名1进行排序后,对salary进行累计求和。
而排序函数有rank()/row_number()/dense_rank() over(order by 列名1)

  • row_number它是根据排序列生成新的一列,放的是序号,而且即使有并列值出现,排序号也不会并列,依旧是(123456……)
  • rank()也可以返回一个新列,放排序名,出现并列值时,排序号是一样的,比如排序号为122446
  • dense_rank()与rank()类似,但它生成的序号是连续的。比如12233。