获取SQL Server中具有最小值的所有项
这张桌子是这样的:获取SQL Server中具有最小值的所有项,sql,sql-server,Sql,Sql Server,这张桌子是这样的: ---------------------------------- EmployeeId Tasks_Count 1 1 2 1 3 2 4 1 5 3 我需要一个查询,以获取具有最小任务计数的所有员工。结果应该是这样的: --------------- EmployeeId
----------------------------------
EmployeeId Tasks_Count
1 1
2 1
3 2
4 1
5 3
我需要一个查询,以获取具有最小任务计数的所有员工。结果应该是这样的:
---------------
EmployeeId
1
2
4
问题是我使用子查询来计算任务。这是我的密码
SELECT *
FROM (SELECT EmployeeId,
COUNT(*) AS Tasks_count
FROM Tasks
INNER JOIN Status ON Tasks.StatusId=Status.Id
WHERE Status.Name != 'Closed'
GROUP BY EmployeeId
ORDER BY Tasks_count DESC) AS Employee_not_closed
WHERE Tasks_count IN (SELECT MIN(Tasks_count)
FROM Employee_not_closed)
你可以在下面试试-
select * from tablename
where Tasks_Count in (select min(Tasks_Count) from tablename)
可以对子查询使用联接
select m.EmployeeId
from my_table m
inner join
(
select min(task_count) min_task
from my_table
) t on t.min_task = m.task_count
使用带领带的
先取:
select EmployeeId
from tablename
order by Tasks_Count
fetch first 1 row with ties
也可以使用以下类似的RANK()
函数来完成
;with cte as
(
select Employeeid, rank() over( order by Tasks_Count) rn
from @table
)
select * from cte where rn=1
您可以使用下面的代码,我已经测试了代码,并且工作正常
select EmployeeId from StackOverFlow_3 where Tasks_Count in(select min(Tasks_Count) from StackOverFlow_3)
非常类似于选择带领带的top 1…我不知道这个选项。@GeorgeMenoutis,FETCH FIRST是ANSI SQL版本。