我有一个包含一些记录的表,表示该表是Student,它有一个名为total_mark的列。现在我需要从total_mark列中获取总数第7位的学生的详细信息。如何在SQL SERVER 2008中执行此操作?
答案 0 :(得分:2)
首先,定义你的意思" 7th"。 7岁?智商第7名?第7高?不管。
WITH
RankedStudents AS (
SELECT *, ROW_NUMBER() OVER ( ORDER BY <Whatever> ) AS RowNumber FROM <Schema>.<Object>
)
SELECT *
FROM RankedStudents
WHERE RowNumber = 7 ;
答案 1 :(得分:1)
首先选择前7位,然后反转排序,只取第一行:
SELECT TOP 1 * FROM (
SELECT TOP 7 *
FROM RankedStudents
ORDER BY total_mark desc) x
ORDER BY total_mark
答案 2 :(得分:0)
试试这个
WITH CTE AS(
SELECT total_mark,RANK() OVER (ORDER BY total_mark DESC)AS RANKED FROM SN_DB)
SELECT DISTINCT * FROM CTE WHERE RANKED = 7