获取表组';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()
,而是相关的子查询——如果“最佳”是指最快的。当然,这需要在特定系统上的特定数据上进行测试,但是相关子查询可能是最快的。