获取表组';sql中的s min元素
我想在每个小组中找到工资最低的人。 这是员工表:获取表组';sql中的s min元素,sql,Sql,我想在每个小组中找到工资最低的人。 这是员工表: DEPARTMENT_ID FIRST_NAME SALARY ------------- -------------------- ---------- 90 Steven 24000 90 Neena 17000 90 Lex
DEPARTMENT_ID FIRST_NAME SALARY
------------- -------------------- ----------
90 Steven 24000
90 Neena 17000
90 Lex 17000
60 Alexander 9000
60 Bruce 6000
60 Diana 4200
50 Kevin 5800
50 Trenna 3500
50 Curtis 3100
50 Randall 2600
50 Peter 2500
例如,我想检索[90,60,50]组中有最低工资的人[Lex,Diana,Peter],怎么做
平台:win10
Sql版本:sqldeveloper 18.1最好的方法是使用
行号()
但是,如果行\u number()
没有帮助,则使用相关子查询:
select t.*
from table t
where sal = (select min(t1.sal)
from table t1
where t1.dept_id = t.dept_id
);
如果同一部门与其他员工具有相同的最低工资,则结果会有所不同,第一个版本将为每个部门提供一行,而第二个版本将为每个部门提供一行或多行 最好的方法是使用行编号()
:
但是,如果行\u number()
没有帮助,则使用相关子查询:
select t.*
from table t
where sal = (select min(t1.sal)
from table t1
where t1.dept_id = t.dept_id
);
如果同一部门与其他员工具有相同的最低工资,则结果会有所不同,第一个版本将为每个部门提供一行,而第二个版本将为每个部门提供一行或多行 添加数据库系统及其子系统的标记version@GeorgeMenoutis谢谢。尼娜也有最低工资。你为什么排斥她?@ErwinSmout-Aha!我不理她…给你的数据库系统和它的version@GeorgeMenoutis谢谢。尼娜也有最低工资。你为什么排斥她?@ErwinSmout-Aha!我忽略了她…快速的反应和完美的回答。谢谢你的回复!您可能还添加了一点,即即使输入没有更改,行号版本也不能保证在不同的调用中返回相同的行。在许多情况下,“最佳方式”不是row\u number()
,而是相关的子查询——如果“最佳”是指最快的。当然,这需要在特定系统上的特定数据上进行测试,但是相关子查询可以是最快的。快速响应和完美答案。谢谢你的回复!您可能还添加了一点,即即使输入没有更改,行号版本也不能保证在不同的调用中返回相同的行。在许多情况下,“最佳方式”不是row\u number()
,而是相关的子查询——如果“最佳”是指最快的。当然,这需要在特定系统上的特定数据上进行测试,但是相关子查询可能是最快的。