r - 如何在 dbplyr 中聚合变量 "arrange"?

标签 r dbplyr

以下 dbplyr 语句失败:

foo <- activity_viewed %>% group_by(pk) %>% summarize(total = n()) %>%
  arrange(-total) %>% head(3) %>% collect()

出现此错误:

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  column "total" does not exist
LINE 4: ORDER BY -"total"
                  ^
)

我可以在查询中看到问题:SQL 不允许 ORDER BY 使用列别名。

这是生成的查询:

> print(show_query(foo))
<SQL>
SELECT "pk", COUNT(*) AS "total"
FROM "activity"
GROUP BY "pk"
ORDER BY -"total"
LIMIT 3

我需要ORDER BY -COUNT(*)

如何让 dbplyr 执行此查询?

最佳答案

dbplyr 可以翻译 desc,但不能翻译 -

library(dplyr) 
library(dbplyr) 
mtcars2 <- src_memdb() %>% 
           copy_to(mtcars, name = "mtcars2-cc", overwrite = TRUE)
mtcars2 %>% arrange(desc(cyl)) %>% show_query()
<SQL>
SELECT *
FROM `mtcars2-cc`
ORDER BY `cyl` DESC

关于r - 如何在 dbplyr 中聚合变量 "arrange"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59328474/

相关文章:

r - 按原样显示 '+' 或 '[' 等函数

r - 如何在 geom_dotplot 中使用颜色?

r - 如何在 ggplot2 中标记 geom_dotplot 的点?

r - dbplyr:从数据库中的表中删除行

r - dbplyr in_schema() 函数行为异常

r - 使用 DBI 包连接到 PostgreSQL 时在 R 中不同

r - 填充两个指定值之间的所有条目

r - 计算一个变量或变量组合为TRUE的实例数

r - 如何按包含 dbplyr 中的变量的字符串进行过滤

r - dbplyr 中 database.table 的语法?