R 中使用的 SQL 代码中存在语法错误,未找到 row_number 函数

Syntax error in SQL code being used in R, no row_number function found

我正在使用 RSQLiteDBIdbplyr 软件包。我正在观看 TechTFQ 的 this YouTube video

library(dbplyr)
library(RSQLite)
library(DBI)

mtcars <- tibble::as_tibble(mtcars, rownames = 'car')  
sql_mtcars <- mtcars

con <- RSQLite::dbConnect(SQLite(), ":memory:")
dplyr::copy_to(con, sql_mtcars)

sql_mtcars_db <- tbl(con, "sql_mtcars")

sql_mtcars_db %>%
  dplyr::select(car, mpg, wt) %>%
  dplyr::show_query()

dbListTables(con)

我收到此行的语法错误。

DBI::dbGetQuery(con, '
SELECT *
  row_number() over(partition by cyl) AS rn
FROM sql_mtcars 
  ')

Error: near "row_number": syntax error

我确定我在这里写的 SQL 语法和我在 YouTube 视频中看到的一样,除了我使用的数据帧和我调用的变量。

我 运行 遇到的错误是什么?是 dbplyr SQL 没有完整的 SQL 动词范围,还是使用了不同的 SQL 语法?

我什至不确定如何找到要在此方法中使用的 SQL 语法的键。通过 ?DBI?dbplyr?RSQLite 寻求帮助并没有太大帮助,因为关于 SQL 动词的文档似乎并不多,而且我还没有找到一个非常全面的小插图来研究。

您似乎在 * 之后少了一个逗号。以下按预期工作:

DBI::dbGetQuery(con, '
SELECT *,
  row_number() over(partition by cyl) AS rn
FROM sql_mtcars 
  ')

注意在 * 之后和 row_number 之前添加一个逗号。