Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
Mysql ows包含12行伪数据,即1到12的整数。然后,我们可以LEFT-OUTER-JOIN内部查询也作为派生表ws,它允许我们确保始终返回12行ws.sums在区间不包含数据时将为空,但我们可以使用它将其转换为0_Mysql_Sql_Performance_Sum_Average - Fatal编程技术网

Mysql ows包含12行伪数据,即1到12的整数。然后,我们可以LEFT-OUTER-JOIN内部查询也作为派生表ws,它允许我们确保始终返回12行ws.sums在区间不包含数据时将为空,但我们可以使用它将其转换为0

Mysql ows包含12行伪数据,即1到12的整数。然后,我们可以LEFT-OUTER-JOIN内部查询也作为派生表ws,它允许我们确保始终返回12行ws.sums在区间不包含数据时将为空,但我们可以使用它将其转换为0,mysql,sql,performance,sum,average,Mysql,Sql,Performance,Sum,Average,我不完全确定它是否会完全按照您的要求运行,因此如果您使用它,您应该确保进行必要的测试,尤其是在间隔的边界上。不完全正确。我的返回189.4167,你的返回599.1045。不过,我不完全确定这是为什么。如果没有看到你的数据,我也很难弄明白。如果运行内部查询,这些总和是否看起来太大?这是从每个函数转储的SUM()的结果:好的,谢谢。我的TIMEDIFF参数顺序错误。我已经更新了我的答案。尽管这个数字还是要高得多,但更接近。将继续查看…是否希望在平均计算中包含0的间隔?不完全是。我的返回189.41

我不完全确定它是否会完全按照您的要求运行,因此如果您使用它,您应该确保进行必要的测试,尤其是在间隔的边界上。

不完全正确。我的返回189.4167,你的返回599.1045。不过,我不完全确定这是为什么。如果没有看到你的数据,我也很难弄明白。如果运行内部查询,这些总和是否看起来太大?这是从每个函数转储的SUM()的结果:好的,谢谢。我的
TIMEDIFF
参数顺序错误。我已经更新了我的答案。尽管这个数字还是要高得多,但更接近。将继续查看…是否希望在平均计算中包含0的间隔?不完全是。我的返回189.4167,你的返回599.1045。不过,我不完全确定这是为什么。如果没有看到你的数据,我也很难弄明白。如果运行内部查询,这些总和是否看起来太大?这是从每个函数转储的SUM()的结果:好的,谢谢。我的
TIMEDIFF
参数顺序错误。我已经更新了我的答案。尽管这个数字还是要高得多,但更接近。将继续查看…是否希望在平均值计算中包含0的间隔?
SELECT (

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
10 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
5 MINUTE) THEN speed ELSE 0 END) + 

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
15 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
10 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
20 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
15 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
25 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
20 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
30 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
25 MINUTE) THEN speed ELSE 0 END) + 

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
35 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
30 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
40 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
35 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
45 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
40 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
50 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
45 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
55 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
50 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
60 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
55 MINUTE) THEN speed ELSE 0 END) +

SUM(CASE WHEN time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
65 MINUTE) AND time < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 
60 MINUTE) THEN speed ELSE 0 END)

)/12
FROM table
SELECT AVG(IFNULL(ws.sums, 0))
FROM 
(
  SELECT 1 i union all SELECT 2 union all SELECT 3 union all SELECT 4 union all SELECT 5 union all SELECT 6 union all SELECT 7 union all SELECT 8 union all SELECT 9 union all SELECT 10 union all SELECT 11 union all SELECT 12
) windows
LEFT JOIN
(
  SELECT SUM(speed) sums,
         FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, time)) / 300) window
  FROM workers_speeds
  WHERE TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, time)) / 60 < 65
  AND TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, time)) / 60 > 5
  GROUP BY FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, time)) / 300)
) ws on windows.i = ws.window