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

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

表格:

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

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

qq24tv8q

qq24tv8q1#

你可以用 DENSE_RANK 具体如下:

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

演示

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

相关问题