gpt4 book ai didi

mysql - sqldf 在使用子查询时出错

转载 作者:行者123 更新时间:2023-11-29 06:59:15 27 4
gpt4 key购买 nike

我正在尝试按工作日获取移动平均值,因为我正在使用 sql 查询。数据框是

data

和sqldf代码:

ma_782 =  sqldf("SELECT  
t1.Id_indicator, t1.Hour,
(
select SUM(t2.Value) / COUNT(t2.Value)
FROM max_value_782 AS t2
WHERE
t1.Hour = t2.Hour and
weekdays.Date(t1.Date) = weekdays.Date(t2.Date)
and DATEDIFF(t1.Date, t2.Date) BETWEEN 1 AND 42
) AS 'MA_by_weekday'
FROM max_value_782 AS t1 ;")

这会产生错误

Error in rsqlite_send_query(conn@ptr, statement) : near "(": syntax error

虽然它可以通过简单的选择工作:

sqldf("select * from max_value_782")

最佳答案

考虑替换 weekdays. 方法,因为此语法假定有一个表限定符。由于默认情况下 sqldf 使用 SQLite 方言,因此请使用 strftime 来比较工作日。此外,单引号用于字符串文字,而不是括起表/字段标识符。 SQLite 可以使用方括号、反引号或双引号,如果不使用保留字/特殊字符,则可以不使用。

ma_782 =  sqldf("SELECT  t1.Id_indicator, t1.Hour,  
(SELECT AVG(t2.Value)
FROM max_value_782 AS t2
WHERE t1.Hour = t2.Hour
AND strftime('%w', t1.Date) = strftime('%w', t2.Date)
AND (t2.Date - t2.Date) BETWEEN 1 AND 42
) AS MA_by_weekday
FROM max_value_782 AS t1;")

关于mysql - sqldf 在使用子查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com