从x个记录中选择SUM,MAX,MIN,AVG,每组五个

时间:2015-06-18 09:27:47

标签: mysql sql

我正在尝试创建一个将对结果集进行计算的查询,它会选择SUM,MIN,MAX,AVG但不具备可靠的标准。

以下是我正在使用的一些数据。

ITEM   VALUE  doe
10703   3     01/05/2015 06:48
10703   3     01/05/2015 06:49
10419   -16   01/05/2015 06:54
10259   4     01/05/2015 07:09
10578   5     01/05/2015 07:39
10196   2     01/05/2015 07:52
10580   -16   01/05/2015 08:07
10872   2     01/05/2015 08:22
10872   2     03/05/2015 08:23
10619   6     03/05/2015 08:32
10663   -5    03/05/2015 08:55
10652   -4    03/05/2015 09:09
10637   3     03/05/2015 09:23
10650   -2    04/05/2015 09:35

我尝试了以下SQL -

SELECT t0.*, SUM(t0.VALUE) as SUMA, MAX(t0.VALUE) AS MAX, MIN(t0.VALUE) AS MIN, AVG(t0.VALUE) AS AVG FROM ( SELECT ITEM, VALUE, doe FROM VALUES WHERE doe between '01/05/2015 00:00:00' AND '01/05/2015 23:59:59' ORDER BY doe LIMIT 5 ) t0 
UNION ALL 
SELECT t1.*, SUM(t1.VALUE) as SUMA, MAX(t1.VALUE) AS MAX, MIN(t1.VALUE) AS MIN, AVG(t1.VALUE) AS AVG FROM ( SELECT ITEM, VALUE, doe FROM VALUES WHERE doe between '03/05/2015 00:00:00' AND '03/05/2015 23:59:59' ORDER BY doe LIMIT 5 ) t1

... ETC

结果如下所示

SUMA   MAX   MIN  AVG  ITEM   DOE
-1     5     -16  0.2  10703  01/05/2015 06:48
8      10    -5   -1   10652  03/05/2015 08:32

这可以完成这项工作,但是如果有一个值的日期,则5的组不完整,因此我将其用于六西格玛统计数据时会破坏数据。

基本上我需要能够选择它在组中看到的每五个记录,直到它达到十个组,我无法找到一种方法,所以我被迫寻求帮助!

如果有人可以就我能做什么提出建议,我们将不胜感激。

如果需要更多信息,请询问

1 个答案:

答案 0 :(得分:0)

我不确定为什么有桌子T0 / T1和UNION参与。这是显示问题所必需的吗?另外我认为其他的都是正确的,它不应该运行,因为你在查询中有T0。*所以它不会自动分组任何东西。只有聚合的查询才有效。

至于问题,我不完全确定你想要什么,但你不能在聚合中做COUNT并排除任何不包含5行的COUNT吗?