【发布时间】:2020-09-08 09:22:10
【问题描述】:
我正在尝试将 r 脚本复制到 SQL 查询。但是,我无法达到相同的结果。问题是在 SQL 中获取日期的总和,这不像 r 脚本那么容易。
R 逻辑:
R 中使用的逻辑是获取相同日期的总和,并且它还通过说值不必是 nan 来进行过滤。 1L 也使输出列成为整数字段。
Oracle 中的错误:
SQL Error [30100] [HY000]: Invalid aggregate function 'sum(Enl)': Invalid parameter types of function 'sum(Enl)'
R 脚本
subjData<- data.frame(
`Enl` = as.Date(c("2020-01-01", "2020-01-01", "2020-01-01", "2020-01-04", "2020-01-05")),
check.names = F
)
actual.enrollment <- function() {
if (any(!is.na(subjData$`Enrl`))) {
e0 <- aggregate(1L * !is.na(subjData$`Enl`), by = list(subjData$`Enl`), FUN = sum)
colnames(e0) <- c("Date", "Enld")
} else {
e0 <- data.frame(
Date = no.dates,
`Enld` = no.numbers,
check.names = F
)
}
e0
}
output:
Date Enld
1 2020-01-01 2
2 2020-01-03 1
3 2020-01-04 1
4 2020-01-05 1
已尝试 SQL 查询:
SELECT Enl,
SUM (Enl) as Enld
FROM subjData
GROUP BY Enl;
【问题讨论】:
-
这里的逻辑也有助于您的问题,特别是对于那些可能对 SQL 有经验但对 R 经验较少的人。
-
添加了,谢谢蒂姆
-
我不知道
NaN将如何转换为SQL,但SUM已经忽略了NULL值,不管这在这里值多少钱。 -
sum() 列与 group_by 列相同?