今天有 5个业务 10月份的业绩是
甲:15万
乙:20万
丙:30万
丁:10万
戊:15万
老板要找出业绩前3名的业务
一般直觉的想法是
select top 3 业务名称,金额 from 业绩 order by 金额 desc
会得到
丙 30
乙 20
甲 15
也有可能会得到
丙 30
乙 20
戊 15
但是今天有可能有n个第3名
所以用 top 3 应该不符合需求
如果改用
select top 3 WITH TIES 业务名称,金额 from 业绩 order by 金额 desc
会得到4笔数据
丙 30
乙 20
戊 15
甲 15
WITH TIES 就是用在这个时候 ,需撘配 TOP n 还有 ORDER BY
会让 ORDER BY 最后一笔的结果一样的DATA也出来
以上面的例子
因为 ORDER BY 金额 desc
所以最后一笔 是15 ,所以金额=15的也都会出现
而产生 top 3 但是会有 4笔数据的结果
------------------------------------------
进阶版再加上排名
select top 3 WITH TIES 业务名称,金额 ,
Rank() over(Order By 金额) as 排名
from 业绩 order by 金额
结果
丙 30 1
乙 20 2
戊 15 3
甲 15 3