如何使用 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)
我在 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)