
SQL 语句如何查询工资最高的10个人?
数据库表名为emp,字段id(标识),name(员工姓名),sal(薪水)现在我想查询薪水最多的前10个人的姓名,请问如何写查询语句,谢谢!...
数据库表名为emp,字段id(标识),name(员工姓名),sal(薪水)
现在我想查询薪水最多的前10个人的姓名,请问如何写查询语句,谢谢! 展开
现在我想查询薪水最多的前10个人的姓名,请问如何写查询语句,谢谢! 展开
8个回答
展开全部
请问你用的什么数据库。
如果MSSQL的是
select top 10 * from emp order by sal desc
如果是Oracle的是
select * from (
select a.*,rownum r from
(
select * from emp
order by sal desc) a
) b
where b.r<=10
但是还有一个问题就是第11位和第10位的工资是一样的可能(并列的情况),上面的语句就欠考虑了。那么就需要修改上面的语句。
如果MSSQL的是
SELECT * FROM emp
WHERE sal IN (
select TOP 10 sal from emp
ORDER BY sal DESC)
ORDER BY sal DESC
如果是Oracle的是
SELECT * FROM emp
WHERE sal IN (
select sal from (
select a.*,rownum r from (
select * from emp order by sal desc) a --对emp进行升序排列
) b --给出伪列
where b.r<=10--获得伪列在10以内的
) ORDER BY sal DESC
如果MSSQL的是
select top 10 * from emp order by sal desc
如果是Oracle的是
select * from (
select a.*,rownum r from
(
select * from emp
order by sal desc) a
) b
where b.r<=10
但是还有一个问题就是第11位和第10位的工资是一样的可能(并列的情况),上面的语句就欠考虑了。那么就需要修改上面的语句。
如果MSSQL的是
SELECT * FROM emp
WHERE sal IN (
select TOP 10 sal from emp
ORDER BY sal DESC)
ORDER BY sal DESC
如果是Oracle的是
SELECT * FROM emp
WHERE sal IN (
select sal from (
select a.*,rownum r from (
select * from emp order by sal desc) a --对emp进行升序排列
) b --给出伪列
where b.r<=10--获得伪列在10以内的
) ORDER BY sal DESC
展开全部
使用查询语句
select
top
3
*
from
(数据库)
order
by
(工资字段名)
desc
如果取出来的刚好是工资最低的,那就把desc去掉
如果你需要完整的代码,可以直接联系我
,说明你的数据库,开发使用的语言,我可以帮你写完整的代码
select
top
3
*
from
(数据库)
order
by
(工资字段名)
desc
如果取出来的刚好是工资最低的,那就把desc去掉
如果你需要完整的代码,可以直接联系我
,说明你的数据库,开发使用的语言,我可以帮你写完整的代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select max(工资列)from 表名称
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
拿点分就走!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top 10 name
from emp
order by sal desc
from emp
order by sal desc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询