业务系统中经常会有排名的需求,考试和比赛中则更普遍了。Excel 中也有个 Rank 函数供排名之用,数据库中更不例外了。假设需要找出工资最高的前三个员工工资(及其员工号)。不过,“前三名”的具体含义需要准确的定义,不然查出来的可能不是想要的结果。首先,因为表中记录数可能就少于三,查出来的记录可能等于三条也可能少于三条。其次,需要考虑并列名次的处理。
- 如果名次不能并列,则还需要考虑是否要根据工资之外的列来区分排名。例如:
名次 ID 工资 ------------- 1 80 1000 2 90 1000 3 13 900 取前三名,则“4 19 900”不会被输出。
- 如果名次可以并列,则还有两种不同方式。
1)名次并列,但是后续的名次要空出来。例如:
名次 ID 工资 ------------- 1 80 1000 1 90 1000 3 13 900
2)后续的名次不空出来。