【问题标题】:Select SUM, MAX, MIN, AVG in groups of five from x amount of records从 x 条记录中选择 SUM、MAX、MIN、AVG,每组 5 个
【发布时间】:2015-09-03 20:46:05
【问题描述】:

我正在尝试创建一个对结果集进行计算的查询,它选择 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

等...

结果如下所示

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 组是不完整的,因此这会破坏数据,因为我将其用于 6 Sigma 统计。

基本上我需要能够选择它在组中看到的每 5 条记录,直到达到 10 组,我一直无法找到如何做到这一点的方法,所以我不得不寻求帮助!

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

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

【问题讨论】:

  • 目前还不完全清楚您要做什么。包括期望的结果。您的示例查询真的很奇怪,因为它没有 GROUP BY 子句。它还至少有 1 个语法错误。
  • 没有可分组的内容,抱歉,我将包含预期结果
  • 您正在使用聚合函数,没有分组就无法使用。
  • SQL 为我运行,就像我说的,我没有分组
  • 这个查询肯定不会为您运行,因为它包含语法错误。如果你想解决这个问题,如果 mysql 对所有列进行隐式分组(我不确定它是否这样做),MAX、MIN、AVG en SU​​M 都将相等。

标签: mysql sql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2016-08-13
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多