我必须通过 R 查询和 SQL 数据库,并且很难让它返回我需要的内容。基本上,数据库有“timeStamp”、“line”、“aggregate”、“name”、“location”和“topic”列。这是我尝试获取时间范围内的所有唯一主题及其关联的列值:
con <- openConn()
query <- "SELECT DISTINCT topic, line, aggregate, name, location FROM doc.database
WHERE \"timeStamp"\ BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'
GROUP BY topic"
topicsdf <- dbGetQuery(con, query)
但是,这会返回错误:
dbSendQuery(conn, statements, ...) 中的错误: 无法检索 JDBC 结果集 JDBC 错误:发送到后端时发生 I/O 错误。 陈述: 选择不同的主题、行、聚合、名称、位置 FROM 文档数据库 “2023-06-01 00:00:00”和“2023-10-30 10:00:00”之间的“时间戳”
非常感谢对此的帮助,因为我不熟悉这种类型的查询
您的查询正在对主题执行
GROUP BY
,这要求您的 SQL 数据库为每个主题值返回一条记录。但是,查询还选择其他列,而不是聚合函数内的列。因此,不清楚应返回 line
、aggregate
、name
或 location
的哪个值,因此此查询会在您的数据库上生成错误。您在评论中澄清了您的要求:
也许我可以选择每个主题的列值的所有不同组合?在这种情况下,您可以尝试简单地删除
GROUP BY
子句并执行不同的选择:
con <- openConn()
query <- "SELECT DISTINCT topic, line, aggregate, name, location
FROM doc.database
WHERE \"timeStamp\" BETWEEN '2023-06-01 00:00:00' AND ' 2023-10-30 10:00:00'"
topicsdf <- dbGetQuery(con, query)