如何将稠密秩/划分应用于动物表?sql服务器

kq4fsx7k  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(457)

表格:

  1. animal height width footlength brand price age
  2. ------------------------------------------------
  3. cow 3 5 2 fuller 231 8
  4. cow 3 5 2 fuller 242 9
  5. cow 3 5 2 fuller 1000 2
  6. chicken 2 2 2 tyson 11 1
  7. chicken 2 2 2 tyson 11 2
  8. chicken 2 2 2 tyson 11 3
  9. cow 4 5 2 tyson 90 900
  10. cow 4 5 2 tyson 90 900

好的,在这张表中,我想把各组排成1,2,3。
因为如果动物的身高、宽度、足长和品牌是相同的,那么它们的排名就相同。
我在sql中编码的方式是,每一行的排名都是相同的。对3个不同的等级。
关于如何更好地理解稠密秩和这个问题有什么建议吗?

qq24tv8q

qq24tv8q1#

你可以用 DENSE_RANK 具体如下:

  1. SELECT *, DENSE_RANK() OVER (ORDER BY height, width, footlength, brand) rnk
  2. FROM yourTable
  3. ORDER BY rnk, animal, height, width, footlength, brand;

演示

请注意,我们不需要/不需要 PARTITION BY 带的子句 DENSE_RANK 这里,因为秩将应用于整个表。使用分区意味着可能相同的秩值会出现多次。

相关问题