使用sqldf检索具有相同最小值的所有行

时间:2017-11-05 01:28:04

标签: r sqldf

我必须为已完成最少工作数的员工检索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

2 个答案:

答案 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