Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何通过每天分成两组(白天/夜间)来获得组的平均值?_Sql_Sqlite - Fatal编程技术网

Sql 如何通过每天分成两组(白天/夜间)来获得组的平均值?

Sql 如何通过每天分成两组(白天/夜间)来获得组的平均值?,sql,sqlite,Sql,Sqlite,我有一张名为thermo的表,每30分钟存储两种不同的温度 (dt=时间| Ti=内部温度|至=外部温度) 我想交替得到白天和夜间的平均值。 这可以通过分组时间06:00-17:59和18:00-05:59 我所能做的最好的事情就是按照以下代码将00:00-11:59和12:00-23:59分组: SELECT CAST(strftime('%m%d', dt) AS TIME) || CAST(strftime('%H', dt)/12 AS TIME) AS time, round(av

我有一张名为thermo的表,每30分钟存储两种不同的温度

(dt=时间| Ti=内部温度|至=外部温度)

我想交替得到白天和夜间的平均值。 这可以通过分组时间06:00-17:5918:00-05:59

我所能做的最好的事情就是按照以下代码将00:00-11:59和12:00-23:59分组:

SELECT CAST(strftime('%m%d', dt) AS TIME) || CAST(strftime('%H', dt)/12 AS TIME) AS time,
  round(avg(Ti), 1) AS Ti,
  round(avg(To), 1) AS To,
  FROM thermo WHERE dt > datetime(CURRENT_TIMESTAMP, 'localtime', '-10 days')
  GROUP BY time ORDER BY time;

是否有方法改变时间组?

您可以使用
案例来确定感兴趣的时间段:

SELECT CAST(strftime('%m%d', dt) AS TIME) as dt,
       (CASE WHEN strftime('%H', dt) BETWEEN 6 AND 17 THEN 'daytime'
             ELSE 'nightime'
         END) as period,
       round(avg(Ti), 1) as Ti,
       round(avg(To), 1) as To
FROM thermo
WHERE dt > datetime(CURRENT_TIMESTAMP, 'localtime', '-10 days')
GROUP BY dt, period
ORDER BY time;

您可以使用
案例
确定利息期:

SELECT CAST(strftime('%m%d', dt) AS TIME) as dt,
       (CASE WHEN strftime('%H', dt) BETWEEN 6 AND 17 THEN 'daytime'
             ELSE 'nightime'
         END) as period,
       round(avg(Ti), 1) as Ti,
       round(avg(To), 1) as To
FROM thermo
WHERE dt > datetime(CURRENT_TIMESTAMP, 'localtime', '-10 days')
GROUP BY dt, period
ORDER BY time;

再想一想,这并不完全正确,因为在这种情况下,夜间包括当天早上(0-6)和下午(17-24)的温度,而每天早上应该是前一天下午的组。。。通过在strftime:,“-6小时”@volk。是的,如果你真的想要的话,减去6小时将把0-6小时视为前一天。再想一想,这不是完全正确的,因为在这种方式下,夜间包括当天上午(0-6)和下午(17-24)的温度,而每天早上都应该在前一天下午的组中。。。通过在strftime:,“-6小时”@volk。是的,如果你真的想要的话,减去6小时将把0-6小时视为前一天。