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

Retrieve all rows with same minimum value for a column with 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

min(...) 始终 returns 在 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)

作为 sqldf 的替代方法,您可以使用 data.table:

library(data.table)
dt <- data.table(ID=1:7, TaskCount=c(74, 53, 10, 5, 1, 1, 1))

dt[TaskCount==min(TaskCount)]

##    ID TaskCount
## 1:  5         1
## 2:  6         1
## 3:  7         1