首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL按间隔分组平均

MySQL按间隔分组平均
EN

Stack Overflow用户
提问于 2014-02-28 17:34:47
回答 2查看 116关注 0票数 1

我有一个幂曲线的xy图。功率在y轴上,风在x轴上。

我从MySQL表中获取值。

我如何才能得到平均功率之间的间隔为1在W风柱。

例:

代码语言:javascript
复制
Wind | Power
10.2   1245
10.2   1245
9.7    1145
8.7    1001
11.1   1345
9.3    1100
10.6   1284
8       987
5.5     352
...

我需要的是:

代码语言:javascript
复制
Wind | Avg(Power)
0-1    ...
1-2    ... 
2-3    ...
... 

提前谢谢你

编辑:

谢谢大家的回答!

对于我的特殊情况,风总是在0到25米/秒之间,我需要得到平均功率的间隔是0.5。

所以:

代码语言:javascript
复制
0 - 0,25
0,25 - 0,75
0,75 - 1,25
1,25 - 1,75
... - 25
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-28 17:55:07

在本例中,我认为最好使用GROUP BY CASE语句。

代码语言:javascript
复制
SELECT CASE 
                WHEN Wind < 1 THEN '0-1'
                WHEN Wind >= 1 AND Wind < 2 THEN '1-2'
                WHEN Wind >= 2 AND Wind < 3 THEN '2-3'
                WHEN Wind >= 3 AND Wind < 4 THEN '3-4'
                WHEN Wind >= 4 AND Wind < 5 THEN '4-5'
                WHEN Wind >= 5 AND Wind < 6 THEN '5-6'
                WHEN Wind >= 6 AND Wind < 7 THEN '6-7'
                WHEN Wind >= 7 AND Wind < 8 THEN '7-8'
                WHEN Wind >= 8 AND Wind < 9 THEN '8-9'
                WHEN Wind >= 9 AND Wind < 10 THEN '9-10'
                WHEN Wind >= 10 AND Wind < 11 THEN '10-11'
                WHEN Wind >= 11 AND Wind < 12 THEN '11-12'
                ELSE 'Other'
            END as Wind,
        AVG(Power) as Power
FROM power
GROUP BY CASE 
                WHEN Wind < 1 THEN '0-1'
                WHEN Wind >= 1 AND Wind < 2 THEN '1-2'
                WHEN Wind >= 2 AND Wind < 3 THEN '2-3'
                WHEN Wind >= 3 AND Wind < 4 THEN '3-4'
                WHEN Wind >= 4 AND Wind < 5 THEN '4-5'
                WHEN Wind >= 5 AND Wind < 6 THEN '5-6'
                WHEN Wind >= 6 AND Wind < 7 THEN '6-7'
                WHEN Wind >= 7 AND Wind < 8 THEN '7-8'
                WHEN Wind >= 8 AND Wind < 9 THEN '8-9'
                WHEN Wind >= 9 AND Wind < 10 THEN '9-10'
                WHEN Wind >= 10 AND Wind < 11 THEN '10-11'
                WHEN Wind >= 11 AND Wind < 12 THEN '11-12'
                ELSE 'Other'
            END

这样,如果您想要更改每个组所涵盖的范围,您可以相当容易地做到这一点。

票数 2
EN

Stack Overflow用户

发布于 2014-02-28 17:49:54

这可以是一个聚合查询,在这个查询中,您使用一个内射函数来对您的个人观察进行分类。内射函数为FLOOR(Wind)

下面是查询(http://sqlfiddle.com/#!2/9e64b6/9/0),包括范围的显示内容。

代码语言:javascript
复制
SELECT CONCAT(FLOOR(Wind),'-',FLOOR(Wind)+1) AS Wind, 
       AVG(Power) AS Power
  FROM power
 GROUP BY FLOOR(Wind)
 ORDER BY FLOOR(Wind)

当然,这使用MySQL AVG()函数,生成算术平均值。我认为你所使用的应用程序更倾向于几何平均值,但我不确定。

它还产生一个稀疏的结果集。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22102016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档