SQL-选择薪资最高的人员的姓名
我有一张名为“工人”的表格,其中包括一些人的姓名、工资和工作地点。该表如下所示:SQL-选择薪资最高的人员的姓名,sql,select,max,Sql,Select,Max,我有一张名为“工人”的表格,其中包括一些人的姓名、工资和工作地点。该表如下所示: |Name|Station|Salary| |Kyle|1 |2200 | |Lisa|2 |2250 | |Mark|3 |1800 | |Hans|4 |1350 | 这听起来可能是一个非常明显的初学者问题,但我无法让它工作。我想选择薪水最高的人的名字。谢谢你的阅读,祝你过得愉快 Select name from table where salary = (
|Name|Station|Salary|
|Kyle|1 |2200 |
|Lisa|2 |2250 |
|Mark|3 |1800 |
|Hans|4 |1350 |
这听起来可能是一个非常明显的初学者问题,但我无法让它工作。我想选择薪水最高的人的名字。谢谢你的阅读,祝你过得愉快
Select name
from table
where salary = (select max(salary) from table)
我不知道你是否想包括领带(如果两个人的工资相同,这是最高工资)
这样做的目的是找到最高工资,然后在查询中使用它来查找所有具有该工资的人员。您需要将单词table替换为表名。您没有提到DBMS:
select name
from table
order by salary desc
fetch first 1 rows only
如果您的DBMS支持OLAP功能:
select name from (
select name, row_number() over (order by salary desc) as rn
from table
) where rn = 1
试试这个
SELECT top 1 Name
FROM tableName
ORDER BY Salary DESC
试着做:
SELECT TOP name
FROM yourtable
WHERE salary = (SELECT MAX(salary) FROM yourtable)
您必须使用子查询获取姓名和最高工资:
select Name, Salary from tb_name where salary=(select max(salary) from tb_name);
你想包括关系吗。如果kyle和lisa都有2250份薪水,你应该同时列出他们吗?因为op没有提到DBMS,我选择了ansi sql解决方案。我的两个都是,不确定fetch是在SQL2008还是SQL2011中首先引入的,行号()从SQL99开始,你的两个答案都不是ansi sql,这没什么错。我只是让op知道。第二个答案使用TSQL row_number over。Fetch是sql server中的一个关键字,指示光标的使用。因此第一个答案不会在sql server上运行,第二个答案只会在sql server上运行。我的答案将运行在任何DBMS系统上。您是否认为这些语句在sqlserver中是否有效与它们是否符合iso/ansi有关?行数()超过(…)例如,SQL2003中的第6.10章中描述了。您可以从下载文档草稿并进行验证。至于fetch first,我似乎找不到该文档的引用,因此我将撤销该引用。如果我找到它,我将发回我现在在文档中找不到fetch first,但这篇wikipedia文章中描述了它:。查找fetch first子句。顺便说一句,SQL Server 2012支持它。这对关系不起作用,我不知道op是否需要关系才能起作用,但如果存在关系,则会删除所有结果。不,不会。您正在按薪资降序选择名字。如果存在关系,则不会返回第二个人。它只会返回第一个结果,而不会返回第二个结果。第二个结果将是tie。请在sqlfiddlecreate表foobar中尝试它(名称varchar(20)null,salary int)插入到foobar选择“测试”,300插入到foobar选择“失败”,300从foobar订单中按工资选择前1*运行并查看。它不适用于ties我的答案是正确的,根据问题,问题只说明名称而不是名称,因此不需要领带。:)太正确了,只是让你知道它不适用于领带。