SQlite月平均值

SQlite月平均值,sqlite,Sqlite,我有5年的风数据,每10分钟记录一次。我必须得到每个月某些列的平均值、最小值和最大值,我所做的是 SELECT avg(S10_AVG), MIN(S10_AVG), max(S10_AVG) FROM CP WHERE strftime('%Y', FECHA)='2008' and strftime('%m', FECHA)='01' 是否可以在不执行60个不同查询的情况下,每月和每年都执行此操作?谢谢是的,您可以使用: SELECT STRFTIME('%Y', fecha)

我有5年的风数据,每10分钟记录一次。我必须得到每个月某些列的平均值、最小值和最大值,我所做的是

SELECT avg(S10_AVG), MIN(S10_AVG), max(S10_AVG)
FROM CP
WHERE strftime('%Y', FECHA)='2008' and strftime('%m', FECHA)='01'
是否可以在不执行60个不同查询的情况下,每月和每年都执行此操作?谢谢

是的,您可以使用:

SELECT 
    STRFTIME('%Y', fecha) AS year, 
    STRFTIME('%m', fecha) AS month, 
    AVG(s10_avg) AS avg, 
    MIN(s10_avg) AS min, 
    MAX(s10_avg) AS max
FROM cp
GROUP BY STRFTIME('%Y', fecha), STRFTIME('%m', fecha)

工作完美,在不到一分钟的时间内做出响应,但是现在我有另一个问题,这个代码的结果是2008 01 7.84206989247312.0 9,99 2008 02 6.74568965517241 1.0 9,99 2008 03 5.49014336917563 1.0平均值是完美的,但最大值和最小值是错误的。我认为问题在于使用逗号表示十进制值尝试上面的代码,但使用
CAST(替换(s10_avg,,,,,,,,,,)作为数字)
代替
s10_avg
的三个匹配项。
SELECT  strftime('%Y', FECHA), strftime('%m', FECHA), avg(S10_AVG), MIN(S10_AVG), max(S10_AVG)
FROM @WindData
GROUP BY strftime('%Y', FECHA), strftime('%m', FECHA)