首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ROW_NUMBER()显示前10名薪资的重新评分问题

使用ROW_NUMBER()显示前10名薪资的重新评分问题
EN

Stack Overflow用户
提问于 2010-12-28 18:21:59
回答 3查看 211关注 0票数 0

我需要使用TOP来解决这个问题。

我使用以下查询来显示前10名的薪水

代码语言:javascript
复制
     SELECT  Salary
     from
     (
       SELECT  Salary, Row_Number() OVER(ORDER BY SALARY DESC) AS 'Salaries'
       FROM User2
     )#emp 

          WHERE Salaries <=10

但是我以9000,8000,7000,6000,5000,500,4000,3000,2000,10000..的身份得到了这个列表

这里缺少1000

我试着做什么

代码语言:javascript
复制
        WHERE Salaries <10 (but 10000 is not displaying)

我做错了什么?能给我合适的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-28 18:39:28

首先,我在你的列表中看到了500个。如果薪水不是数字,则使用字符串排序。因此它将是10000,9000,8000,7000,6000,5000,4000,3000,2000,1000。您确实应该更改列数据类型,但如果您不能这样做,您将需要使用convert函数,例如convert(numeric(9,2),Salary)。

此外,我认为你最好使用等级函数- http://msdn.microsoft.com/en-us/library/ms176102.aspx,因为它能做你想做的事情。然后,如果你需要前15名,你只需要做出改变。

示例:

代码语言:javascript
复制
SELECT Salary
FROM
(SELECT Salary
    ,RANK() OVER 
    (ORDER BY SALARY DESC) AS 'RANK' From User2) Salaries
WHERE
 Salaries.RANK <= 15
票数 2
EN

Stack Overflow用户

发布于 2010-12-28 18:24:22

问题出在哪里:

代码语言:javascript
复制
SELECT TOP 10 Salary 
FROM User2 
ORDER BY Salary DESC
票数 2
EN

Stack Overflow用户

发布于 2010-12-28 18:27:46

你似乎把事情搞得太复杂了。

试试看下水吧。

代码语言:javascript
复制
SELECT TOP 10 Salary FROM User2 ORDER BY Salary DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4545314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档