四大排序函数

文章目录

    • 分类
    • 总结

分类

  1. row_number:顺序排序
  2. rank:跳跃排序,如果有两个第一级别时,接下来是第三级别
  3. dense_rank:连续排序,如果有两个第一级别时,接下来是第二级别
  4. ntile:分组处理(分桶处理)
    ntile函数分组约定:
      (1) 每组的记录数不能大于它上一组的记录数,即编号小的桶放的记录数不能小于编号大的桶。也就是说,第1组中的记录数只能大于等于第2组及以后各组中的记录数。
      (2) 所有组中的记录数要么都相同,要么从某一个记录较少的组(命名为X)开始后面所有组的记录数都与该组(X组)的记录数相同。也就是说,如果有个组,前三组的记录数都是9,而第四组的记录数是8,那么第五组和第六组的记录数也必须是8

总结

  1. 关于Parttion by:
      Parttion by关键字是Oracle中分析性函数的一部分,用于给结果集进行分区。它和聚合函数Group by不同的地方在于它只是将原始数据进行名次排列,能够返回一个分组中的多条记录(记录数不变),而Group by是对原始数据进行聚合统计,一般只有一条反映统计值的结果(每组返回一条)。
  2. 关于空值:
      使用rank over()的时候,空值是最大的,如果排序字段为null, 可能造成null字段排在最前面,影响排序结果。
      可以这样: rank over(partition by derpartment order by Salary desc nulls last)

你可能感兴趣的:(#,mysql)