我必须为已完成最少工作数的员工检索ID。有多名员工完成了1份工作。我当前的sqldf查询只检索1行数据,而有多个员工ID只完成了1个作业。为什么它停在第一个最小值?如何获取列中具有最小值的所有行?这是一个数据样本:
ID TaskCOunt
1 74
2 53
3 10
4 5
5 1
6 1
7 1
我使用的代码:
sqldf("select id, min(taskcount) as Jobscompleted
from (select id,count(id) as taskcount
from MyData
where id is not null
group by id order by id)")
输出
ID leastcount
5 1
虽然我想要的是完成最少工作的所有行。
ID Jobscompleted
5 1
6 1
7 1
答案 0 :(得分:2)
min(...)
总是在SQL中返回一行,与所有SQL聚合函数一样。试试这个:
sqldf("select ID, TaskCount TasksCompleted from MyData
where TaskCount = (select min(TaskCount) from MyData)")
,并提供:
ID TasksCompleted
1 5 1
2 6 1
3 7 1
注意:可重复形式的输入是:
Lines <- "
ID TaskCount
1 74
2 53
3 10
4 5
5 1
6 1
7 1"
MyData <- read.table(text = Lines, header = TRUE)
答案 1 :(得分:0)
作为BEGIN stmts_opt END
的替代方案,您可以使用sqldf
:
data.table