如何使用 RSQLite 检索具有 3 列(日)、(月)和(年)的最小日期?

How to retrieve the minimum date having 3 columns (day), (month) and (year) with RSQLite?

我在 R 中使用 SQL。我想通过选择 'day; 列的最小值、'month' 列的最小值和最小值来获得最小日期'year'.

列的值

我已经用下面的代码试过了:

dbGetQuery(db, "SELECT day, month, year
                FROM surveys
                WHERE year = (SELECT MIN(year) FROM surveys);")

但是我的输出不是一个值,我怎样才能在我的输出中得到一个值而不是值列表?

使用显示的测试数据,我们按年、月和日对其进行排序,select 排序后的第一行 table。

library(sqldf)
surveys <- data.frame(year = 2001:2005, month = 5:1, day = 1:5)

sqldf("select day, month, year from surveys order by year, month, day limit 1")
##   day month year
## 1   1     5 2001

现在您查询 returns 行的最小年份,而不是最小日期。考虑通过连接日期部分来标识最小值来生成日期列:

sql = "WITH sub AS (
          SELECT day, month, year
                , DATE(year || '-' ||
                       CASE 
                          WHEN length(month)=1 
                          THEN '0' || month
                          ELSE month
                       END  || '-' ||
                       CASE 
                          WHEN length(day)=1 
                          THEN '0' || day 
                          ELSE day 
                       END) AS [date]
          FROM surveys
      )

      SELECT DISTINCT day, month, year, [date]
      FROM sub
      WHERE [date] = (SELECT MIN([date]) FROM sub)"

dbGetQuery(db, sql)

Online Demo